CDN 与静态资源

把静态资源与可缓存内容分发到边缘节点:降低源站带宽与访问延迟;配置要点包括缓存规则、回源策略、刷新与预热,动态内容可按需加速。

CDN 的作用与配置要点

CDN 把静态资源与可缓存内容分发到靠近用户的边缘节点:用户从就近节点取内容,源站带宽与跨地域延迟同时下降。配置的核心是缓存规则与回源策略——按文件类型和路径设置不同的 TTL,配合文件指纹实现长缓存,并在发布流程里集成刷新与预热。动态内容也可以加速(回源优化、长连接复用),但收益取决于回源链路的质量而不是边缘缓存。

基本信息

缓存规则按文件类型与路径设置 TTL;带版本号文件名可长缓存
回源分片回源与合并回源配合;回源启用压缩
刷新发布流程集成刷新与预热,避免新旧版本混杂
缓存键默认按 URL;带查询参数时需评估参数是否影响内容

典型使用场景

  • 前端静态资源发布:JS、CSS、图片走边缘缓存,降低首屏加载时间
  • 大文件分发:安装包、视频按分片缓存,缓解源站带宽压力
  • 跨地域访问加速:为远端用户缩短传输路径与握手次数
  • 突发流量承接:活动页面与图片由边缘节点承担峰值
  • 源站保护:限制回源带宽,避免缓存失效时源站被瞬时打满

缓存策略分层

内容类型TTL 建议刷新方式
带哈希指纹的 JS/CSS长(月级)发布换文件名,无需刷新
HTML 入口文档短(分钟级)发布后主动刷新
图片与字体按目录设置中长按路径批量刷新
接口响应默认不缓存确需缓存时评估参数化缓存键

发布流程集成要点

发布流程集成要点
1. 构建产物带内容哈希:app.a1b2c3.js 这类文件名
2. 上传对象存储并设置长缓存元数据
3. 刷新入口 HTML 与清单文件(短 TTL)
4. 预热热点资源,避免发布瞬间回源洪峰
5. 校验:抽查边缘节点返回的版本与预期一致
# 入口文档刷新失败是“新旧版本混杂”的常见原因

使用要点

  • 带哈希文件名的资源可以设置长 TTL:内容变更靠新文件名,缓存无需频繁刷新
  • 入口 HTML 用短 TTL 并主动刷新,避免用户长期停留在旧版本
  • 发布后核对边缘返回版本:抽查几个节点确认刷新已生效
  • 回源要有限流与重试保护,缓存批量失效时源站压力最大
  • 缓存键要明确:带业务无关参数(如跟踪参数)的 URL 会降低命中率
带哈希文件名的资源可以设置长 TTL:内容变更靠新文件名,缓存无需频繁刷新,这是降低发布期回源压力最有效的手段。
刷新是异步且耗时不确定的操作:紧急发布时不能假设“点了刷新就立刻生效”,关键变更要有回滚到旧版本资源的预案。

易错点

  • HTML 与静态资源同 TTL,发布后用户看到新旧混合,出现版本不匹配的报错
  • 未预热新资源,发布瞬间回源出现洪峰,源站带宽被打满
  • 缓存键包含跟踪参数,同一资源被缓存多份,命中率明显低于预期
  • 过度依赖刷新而不用文件指纹,每次发布都要全量刷新且存在生效时延
  • 私密内容走公共 CDN 且未做鉴权,导致越权访问或内容泄露

数据来源与参考

  • AWS 文档:CloudFront 缓存与回源策略
  • MDN Web 文档:CDN 基础
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌