CDN 的作用,以及你的网站何时需要它
CDN 会把你网站文件的副本存放在靠近访客的服务器上。本文讲解它如何运作、能加速什么、解决不了什么,以及如何判断你的网站是否需要它。
内容分发网络(CDN)是一个分布在众多地点的服务器网络,它保存你网站文件的副本,并从离访客较近的节点提供给他们。每个请求不必都一路抵达你的主机服务器,许多请求在靠近访客的地方就得到了响应。
本文讲的是概念:CDN 真正做了什么、没有做什么,以及如何判断你的网站是否会从中受益。如果你想了解某个具体服务商的设置步骤,请参阅我们关于 Cloudflare 免费 CDN 的文章。
CDN 解决的问题
数据传输很快,但不是瞬时的。身处另一个大洲的访客连接你的源服务器,每一次往返都要为物理距离付出代价。加载一个页面可能需要数十个请求,涉及 HTML、样式表、脚本、字体和图片,每一个都会增加一点延迟。CDN 为那些可以复用的文件缩短了这段距离。
CDN 如何工作
- 访客请求某个文件,比如你的徽标或样式表。
- 请求到达靠近访客的 CDN 边缘服务器。
- 如果边缘节点有新鲜的副本,就立即响应。这称为缓存命中。
- 如果没有,边缘节点会从你的源服务器获取该文件,保存一份副本并转发出去。这称为缓存未命中,附近的下一位访客就能命中。
- 缓存规则(包括由你的响应头设定的过期时间)决定副本保留多久。
CDN 能加速什么
- 静态文件:图片、CSS、JavaScript、字体和下载文件最为理想,因为对每位访客来说都是一样的。
- 连接建立:附近的边缘节点能更快完成 TLS 握手,而且 CDN 通常支持 HTTP/2 和 HTTP/3 等现代协议。
- 源站负载:CDN 响应时,你的服务器就不必响应,这在流量高峰期很有帮助。
- 图片分发:有些 CDN 可以调整图片尺寸或转换格式,不过功能因服务商和套餐而异。
CDN 解决不了什么
坦诚面对它的局限是有益的。
- 缓慢的数据库查询或过载的源站,仍会让未缓存的动态页面变慢。
- 包含数兆字节图片和脚本的臃肿页面依然很重;CDN 只是从更近的地方把它们送过去。
- 按用户个性化的页面,例如账户区域和结账页,通常不应缓存,仍然要回源。
- CDN 并不能取代优质的主机。它位于主机的前面。
除了静态文件,也缓存 HTML
许多 CDN 还可以缓存整个 HTML 页面,这样对匿名访客几乎完全不需要源站做任何工作。这对博客和展示型网站很有效,但需要小心:已登录用户、购物车和表单页面必须排除在外,并且你需要一种在更新内容后清除缓存的方法。在没有适当规则的情况下缓存 HTML,是“我的修改没有显示”这类抱怨的常见原因。
安全方面的附带好处
由于访客首先连接的是 CDN,许多服务商会增加保护层:吸收大规模的流量洪峰、过滤已知的恶意请求,以及隐藏源服务器的地址。防护的深度取决于服务商和套餐,所以请把它视为有益的额外功能,而不是完整的防御。我们关于 DDoS 防护和 Web 应用防火墙的文章涵盖了这些话题。
你需要它吗?
如果你不确定,支持团队可以通过联系页面帮你查看你的配置。
| 情形 | CDN 的价值 |
|---|---|
| 本地网站,访客大多集中在靠近你服务器的某个地区 | 一般;对减轻负载和提供防护仍有帮助 |
| 访客分布在多个国家 | 高 |
| 图片多或媒体多的页面 | 高 |
| 推广活动或媒体报道带来的流量高峰 | 高 |
| 用户很少的小型内部工具 | 低 |
实际注意事项
- 为静态文件设置合理的缓存时长,让 CDN 和浏览器能够复用它们。
- 使用带版本号的文件名,或在更新 CSS 和 JavaScript 时清除缓存。
- 启用 CDN 后,分别在已登录和未登录状态下测试网站。
- 检查访客、CDN 和源站之间的 HTTPS 是否端到端正常。
源站防护与缓存命中率
人们谈论 CDN 性能时,经常会提到两个术语。缓存命中率是指由边缘节点而非源站响应的请求所占的比例;比例越高,你的服务器工作量越少。你可以通过缓存更多文件类型、为静态资源设置更长的时长,以及避免产生不必要的查询字符串(它们会让同一个文件拥有许多不同的 URL)来提高它。
有些服务商还提供源站防护(origin shielding),即边缘节点从一个中间缓存获取内容,而不是在清除缓存后各自分别请求你的源站。这主要对流量大的大型网站有意义。一般的小型网站用不上它,但在阅读服务商文档时,了解这个术语会有帮助。
成本与复杂度
许多 CDN 提供免费套餐,涵盖小型网站的基本需求,更多功能则在付费套餐中。真正的成本很少是金钱,而是花在理解缓存规则以及测试一切是否正常上的时间。先从静态文件开始,确认一切正常,然后再考虑缓存 HTML。
你的 Zebra Hosting 网站上的 CDN
托管在 Zebra Hosting Cloud 上的网站可以使用 Cloudflare CDN,每个主机套餐也都附带免费 SSL 证书。关于它们如何配合,请阅读 CDN 页面。我们提供 17 种语言的技术支持。