首页/云/云网络与负载均衡速查/缓存过期时间(TTL)策略
云 DNS 与 CDN49 条

缓存过期时间(TTL)策略

TTL 决定资源在边缘节点的存活时长:带指纹文件名的静态资源适合长 TTL,入口 HTML 与频繁变化的内容用短 TTL。长 TTL 依赖刷新机制兜底,短 TTL 会抬高回源比例与源站压力。

TTL 决定缓存时长

TTL 决定资源在 CDN 边缘节点上能存活多久。带内容指纹的静态资源适合长 TTL,把回源降到最低;入口 HTML 与频繁变化的内容要用短 TTL,保证发布后访客尽快拿到新版本。TTL 的本质是回源压力与内容时效性之间的取舍,配错任何一边都会出问题:太短会压垮源站,太长会让变更迟迟不生效。

基本信息

生效优先级源站 Cache-Control / Expires 与控制台缓存规则谁优先,各产品不同,改完必须实测
长 TTL 适用带内容指纹的文件名、版本号固定的安装包、不常变的图片
短 TTL 适用入口 HTML、列表页、频繁更新的数据文件
兜底手段变更时用刷新强制失效,作为例外通道而非常规流程

典型使用场景

  • 前端构建产物带 hash 文件名,配长 TTL 提升命中率
  • 入口 index.html 配短 TTL,保证发版后引用指向新资源
  • 活动页与运营素材按活动周期设置,活动结束后单独刷新
  • 接口类响应默认不缓存,避免把个性化数据缓存给其他人
  • 大文件下载按版本号命名,用长 TTL 减少回源带宽

检查实际下发头

检查实际下发头
curl -sI https://cdn.example.com/index.html | grep -i -E 'cache-control|expires|age|x-cache'
curl -sI https://cdn.example.com/assets/app.a1b2c3.js | grep -i -E 'cache-control|age'
# 连续请求两次,观察 Age 是否递增:递增说明命中了边缘缓存

资源类型与建议

资源类型建议 TTL理由
带指纹的 JS/CSS长内容变则文件名变,无需靠刷新
入口 HTML短或不缓存必须能及时指向新的资源清单
图片与字体长更新频率低,体积占比高
接口 JSON不缓存或极短内容与用户或时刻强相关
边缘缓存时间从「用户真实取回该文件的时刻」开始计算,而不是源站的修改时间,所以同一文件在不同节点的过期时刻并不一致。
给入口 HTML 设长 TTL 又不做刷新,发布后访客会长时间停留在旧页面,甚至引用已被清理的旧资源导致白屏。

易错点

  • 全站统一长 TTL 又不开指纹,每次发布都要手动刷新,漏刷就出现新旧资源混用
  • 全站统一短 TTL,回源比例居高不下,源站压力与流量费用双高
  • 只改控制台规则没核对源站 Cache-Control 的优先级,实际生效值与预期相反
  • 靠刷新当常规发布手段,刷新配额耗尽或刷新延迟时线上内容不一致

数据来源与参考

  • 阿里云 CDN 缓存过期文档
  • 腾讯云 CDN 缓存配置说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌