首字节时间与 CDN 对比?

使用 CDN 加载页面与不使用 CDN 有何区别?你们使用的是哪种类型的提供商?

我在使用 CDN 时加载时间明显更长。是不是我哪里操作有误,或者有什么我不了解的地方?也许我还需要设置一些我不了解的配置?

CDN 在缓存资源之前速度会较慢。在进行任何测试之前,您可能需要等待一段时间。

好吧,第一个线索……感谢。
一点点。多少?我们说的是几天还是几周?

我们应该强制使用 HTTPS 还是 HTTP 发送负载?我问这个问题是因为加载方式存在差异。这取决于页面是完整加载,还是看起来就像原始 JavaScript 未被加载?

时间框架将取决于用户如何与网站交互。下载量最多的资源将被加载到 CDN 缓存中,如果您离 CDN 服务器比离源服务器更近,访问速度会更快。

如果您的数据中心就在附近,而 CDN 服务器距离 1000 公里,那么访问速度始终会更慢。CDN 的理念是为地理分布广泛的受众提供更好的服务,而不是优化集中式的访问。

但我们要讨论的是在将 CDN 地址添加到我们的 app.yml 文件之后出现的情况吗?

那么,为什么 CDN 地址要使用子域名呢?也就是说,为什么不能是 DISCOURSE_CDN_URL: //637763234.cdn-provider.com,而必须是 discourse-cdn.example.com 呢?

是的,我知道,但我正在使用来自世界不同地区的多种测试工具进行检查。而且 CDN 总是更慢!

您具体是指哪条路径上的 TTFB?

对于静态资源(如 JS 文件或用户上传的 JPG),使用 CDN 时 TTFB 始终会很快,因为多个 PoP 的低延迟有助于提升性能。

另一方面,动态路由的 TTFB 则没有比较的意义,因为我们的 DISCOURSE_CDN_URL 本身就不覆盖这些路由。

你能具体解释一下你的意思吗?

我提供的是测试论坛的结果。(顺便说一句,它只是稍微快了一点)// 但这仅适用于没有内容的崭新域名。

以及为 CloudFront 创建的结果:

您看到的只是正常的波动。CDN 不会影响您的 Discourse 实例根路径或任何其他动态路由的首字节时间。CDN 仅用于提供静态资源。

那么,如果这些资源(静态资源)存放在 S3 中,会有区别吗?

不,没有。CDN 会在需要时从 S3 缓存这些资源。

那只是一个装饰性地址,完全不需要。

我原本希望 CDN 能加快页面加载速度,但我想效果可能微乎其微。

除了增加 RAM 和 CPU 资源外,还有其他更有效的方法可以加快全球不同地区的页面加载速度吗?

TTFB 是应用服务器发送 200 响应所需的时间。您无法通过 CDN 提升它,因为 CDN 仅用于提供静态资源。

这将加快页面速度,但不会加快首字节时间。您将加快多媒体(图片、PDF、视频)和 JavaScript 的加载。这将提升网站的响应速度,但所有动态内容仍需从中央服务器加载。

因此,例如用户头像的加载会更快,但主题标题则不会。

由于 Discourse 会阻塞渲染以等待 JavaScript 和 CSS 加载,因此通过利用 CDN 仍然可以更快地使页面具备交互性。

进行此类分析需要比盲目运行 Lighthouse 和 WebPageTest、随意选取结果并过度纠结于它更多的内容。

如果你的目标是让页面在这些工具中获得更高的分数,我建议使用如 https://jekyllrb.com/ 等工具驱动的博客。

那我该如何进行分析呢?