CDN 缓存规则怎么设置?TTL、缓存键、刷新与回源指南
CDN 是否真正加速,取决于哪些内容可缓存、缓存如何区分请求、资源如何更新以及回源是否稳定,而不只是节点数量。
先区分静态与动态内容
带版本号的 JS、CSS、图片和下载文件适合长期缓存;登录、购物车、用户资料和实时 API 通常不应共享缓存。
- 按路径和响应类型制定规则
- 检查 Cookie 与 Authorization
- 私有响应使用 no-store 或 private
TTL 与版本化发布
静态资源使用内容哈希或版本号后,可以设置较长 TTL;更新时发布新 URL,而不是频繁刷新全站缓存。
- HTML 使用较短 TTL 或协商缓存
- 静态资源使用 immutable
- 不要让同一 URL 返回不同文件版本
缓存键决定命中和隔离
缓存键通常包含域名、路径和选定查询参数。把无关参数全部加入会降低命中率,忽略业务关键参数可能造成内容串用。
- 清理广告跟踪参数
- 保留影响响应内容的参数
- 分别验证桌面端、移动端和语言版本
监控命中率与回源
观察命中率、回源请求、回源带宽、状态码和边缘延迟,避免缓存规则把压力或错误放大到源站。
- 限制源站只接受 CDN 回源
- 保持源站 HTTPS 证书有效
- 准备 CDN 故障时的切换与降级
常见问题
缓存时间越长越好吗?
不是。长期缓存适合带版本号且内容不变的静态资源;频繁变化或个性化内容需要更谨慎。
刷新缓存后为什么用户仍看到旧内容?
还可能存在浏览器缓存、Service Worker、多层 CDN、DNS 或源站中间缓存,需要逐层检查响应头。