如果使用 CDN 后网站依然很慢,请检查是否存在这些常见的 CDN 问题。
复制文章链接
内容分发网络 (CDN) 是一组分布式服务器,负责缓存或保存 Web 内容的副本,以便快速交付给最终用户。除了缓存之外,CDN 还可以通过多种方式加速内容交付并改善用户体验,例如协助进行视频流式传输、动态内容交付,以及 SSL 加密和身份验证。
任何网站都可能受益于 CDN。CDN 位于最终用户与源服务器之间。它们会使用缓存中的内容填充用户请求,然后再将请求传递给源服务器。这可以加快网站加载速度,改善用户体验。这有点类似于在杂货店买食物,比开车穿越全国、跑遍多个农场和工厂去采购每周的杂货要快得多。
大多数情况下,注册 CDN 应该可以提高网站速度,帮助网站运营商节省带宽成本,提高网站可靠性,以及增强抵御某些类型的网络攻击(例如 DDoS 攻击)的能力。然而,有时候,CDN 问题会阻碍网站获得这些优势。以下是一些潜在的 CDN 问题、引发这些问题的因素,以及解决方法建议。
使用 CDN 后,许多问题可能会导致网站无法提升性能,甚至速度减慢。
缺乏全球覆盖:不同区域的性能可能不一致,具体取决于使用的 CDN。请务必使用能够在其网络上的任何地方缓存内容,并且全球位置靠近最终用户的 CDN。
源服务器问题:如果 CDN 无法从源服务器获取内容,则无法缓存或提供内容。当源服务器宕机或源服务器与 CDN 之间的流量遇到网络瓶颈时,可能会发生这种情况。
无法从源服务器加载动态内容:无法缓存动态内容,因此如果源服务器无法正确响应请求,则无论 CDN 的缓存行为如何,页面都可能加载缓慢或无法加载。一些 CDN,例如 Cloudflare CDN,集成了其它服务,可以加速分发动态内容。
未优化文件:可能无法缓存非常大的内容片段或某些文件类型,具体取决于 CDN 的限制。请确保优化所有内容,以实现快速交付并提供良好的用户体验。许多 CDN 具有优化、“最小化”(减少文件大小)或压缩内容的功能。
阻塞渲染的资源:此类资源是指页面中的元素,它们会阻止页面其余部分的加载。例如,层叠样式表 (CSS) 文件是阻塞渲染的资源。如果页面的其余部分已适当缓存但 CSS 文件缓存异常,则必须首先从 Web 服务器获取 CSS 文件,然后才能从缓存中加载其他页面元素。这可能会减缓页面加载时间。请务必缓存阻塞渲染的资源或重新设计页面架构,以便不包含不必要的资源或最后加载此类资源。
未缓存第三方脚本:很多网站集成了其他来源的脚本;这些来源可能不使用相同的 CDN。如果这些第三方脚本的源服务器地理位置比较偏远、未进行交付优化或流量过载,则其加载时间可能会更长。如果这些脚本是阻塞渲染的资源,则可能会减缓整个页面的加载速度。使用 Chrome 开发人员工具,评估加载缓慢的内容及其来源。考虑替换那些持续减缓页面加载速度的脚本,或者使用通过 CDNJS 托管的脚本,它是一个免费的内容分发网络,为数千个 JavaScript 和 CSS 资源库提供服务。
CDN 缓存命中率低:在缓存方面,“缓存未命中”是指在 CDN 中未找到请求的内容,必须从源服务器获取。“缓存命中”是指在缓存中找到了请求的内容,并且从缓存中提供。缓存命中率旨在衡量给定网站的命中率与未命中率之间的关系。缓存命中率低,即表示大部分网页内容无法从缓存中获取,用户的浏览器必须从源服务器获取请求的内容。每次缓存未命中还可能会产生网站出口费用(具体取决于托管提供商),结果导致这些网站的运营成本增加。
缓存命中率低可能由多种原因造成:
请谨记,缓存命中率并不是衡量网站性能的唯一指标。Web 性能的整体视图,包括 Core Web Vitals 和其它指标,这些指标会影响用户体验、SEO 和 AI 优化。
如果内容加载速度很快但显示的却是错误内容,未体现最近的更新或更改,则可能是缓存内容的生存时间 (TTL) 设置过高。TTL 设置用于衡量内容在 CDN 或浏览器刷新其缓存的副本之前,应被缓存的时长(以秒为单位)。如果内容更新速度不够快,请降低其 TTL。或者,请尝试清除缓存,以便 CDN 重新从源服务器获取内容。
频繁更新的内容可能需要特殊的缓存规则。在某些情况下,这些内容根本不应该被缓存。Cloudflare 提供清除功能,可以立即从缓存中清除网页内容。
如果某个域及其所有子域未指向 CDN,则不会缓存与这些域关联的内容,也不会提升网站性能。
请确保子域设置正确。必须单独设置子域(通过 CNAME 记录配置)。如果子域不在 CDN 后面(即使主域在 CDN 后面),其内容将不会被缓存。
CDN 通常为网站提供 SSL 证书。SSL 证书有助于验证用户与网站的连接,加密用户输入的敏感数据,以及防止浏览器中出现用户安全警告。但有时,网站会提供“混合”内容,即:网页上的某些内容通过 SSL 连接提供,而某些内容则不然。用户可能会收到关于页面安全的浏览器警告,页面可能无法加载,或者页面加载速度可能会变得更慢(因为浏览器尝试发起 TLS 握手,但失败)。
如果网页包含来自外部来源或 SSL 证书中未列出的子域的内容,则可能会出现这些错误。Chrome 开发人员控制台有助于开发人员排查混合内容错误:开发人员可以查看内容的加载来源以及使用的 URL。
其他 SSL 错误可能与域名的证书有关。如需了解常见的 SSL 问题,请单击此处。
需要 Cloudflare CDN 支持?请加入 Cloudflare 社区,获取免费支持和其他 Cloudflare 用户的见解。
内容分发网络 (CDN) 是一组分布式服务器,负责保存 Web 内容的副本,以便将其快速交付给最终用户。除了缓存之外,CDN 还可以通过各种服务(支持流式传输、动态内容交付、DDoS 缓解和 TLS 使用),加速内容交付并改善用户体验。
CDN 位于最终用户与源服务器之间,通过加速网站内容交付,帮助用户更快地加载网站。CDN 通过缩短用户与请求内容之间的距离并优化文件,实现这一点。
有些问题可能会导致 CDN 性能缓慢,包括缺乏全球覆盖、源服务器问题、无法正确加载动态内容、文件未优化、阻塞渲染的资源、未缓存第三方脚本,或缓存命中率低。
缓存命中率低是指大部分网页内容不是从 CDN 的缓存中获取,迫使用户的浏览器从源服务器检索内容。这可能会导致页面加载时间变得更慢,并且可能因出口费用而增加运营成本,具体取决于所述网页的架构。
缓存命中率低的原因可能是:缓存规则配置不正确、资产的缓存级别因 URL 类型(例如查询字符串)而异,或源服务器的缓存控制标头与 CDN 缓存规则之间产生冲突。
如果缓存内容的生存时间 (TTL) 设置过高,可能会出现过时的内容。TTL 决定着内容在 CDN 或浏览器刷新其缓存的副本之前,应被缓存的时长。降低 TTL 或清除缓存可以解决这个问题。