CDN 静态资源缓存过期时间设置多少秒最合适?

文章导读
CDN 缓存过期时间没有绝对固定的秒数,需根据资源更新频率决定。通常静态资源建议 7-30 天,带版本号的静态文件可设 1 年,动态内容设为 0-60 秒或不缓存。
📋 目录
  1. 核心原理
  2. 主流云厂商配置路径
  3. 不同场景缓存策略推荐
  4. 验证方法
  5. 资源更新与刷新
  6. 常见配置坑点
A A

CDN 缓存过期时间没有绝对固定的秒数,需根据资源更新频率决定。通常静态资源建议 7-30 天,带版本号的静态文件可设 1 年,动态内容设为 0-60 秒或不缓存。

先说结论:缓存时间取决于资源更新频率,静态资源宜长,动态内容宜短。默认策略通常为 3600 秒,但建议按业务调整。

  • 适合:图片、CSS、JS 等不常变动的静态文件设置较长时长
  • 先准备:确认资源是否采用文件名指纹化或版本号管理
  • 验收:通过 curl 命令检查响应头中的 Cache-Control 字段
  • 注意:若开启“跟随源站”,源站 Header 优先级高于 CDN 控制台配置

核心原理

CDN 缓存的核心是 TTL(生存时间),决定了节点存储副本的有效时长。未过期直接返回,过期则回源。设置过短会增加源站负载,设置过长可能导致用户获取旧数据。不同厂商默认策略不同,有的默认 3600 秒,有的默认 30 天,需根据业务调整。

CDN 静态资源缓存过期时间设置多少秒最合适?

主流云厂商配置路径

不同云厂商控制台界面略有差异,但核心配置路径相似:

  • 阿里云:CDN 控制台 -> 域名管理 -> 选择具体域名 -> 缓存配置 -> 缓存过期时间 -> 添加规则。
  • 腾讯云:CDN 控制台 -> 域名管理 -> 选择具体域名 -> 缓存配置 -> 缓存过期时间 -> 添加规则。

在配置页面,可按文件后缀名添加规则,例如 jpg,png,css,js 设置为 2592000 秒(30 天),动态文件如 php,jsp 设置为 0 秒或不缓存。

CDN 静态资源缓存过期时间设置多少秒最合适?

不同场景缓存策略推荐

资源类型建议时长Cache-Control 示例说明
版本化静态资源 (style.v1.css)1 年 (31536000 秒)max-age=31536000文件名含哈希或版本号,可长期缓存
普通静态资源 (jpg/png)30 天 (2592000 秒)max-age=2592000无版本号的图片、字体等
动态接口 (api/php)0 秒或不缓存no-cache, no-store实时数据,避免缓存污染
HTML 文件较短 (0-3600 秒)max-age=3600便于快速更新页面结构

验证方法

使用 curl -I 命令请求资源,观察 HTTP 响应头。若存在 Cache-Control: max-age=2592000 或 Expires 字段指向未来时间,且多次请求 Age 字段在增加,说明缓存生效。

curl -I https://www.example.com/style.css

资源更新与刷新

若文件内容更新,建议修改文件名(如 style.v1.css),而非覆盖同名文件。若必须覆盖同名文件,需在 CDN 控制台提交刷新任务:

  • 缓存刷新:提交 URL 刷新或目录刷新,强制 CDN 节点删除旧缓存。
  • 缓存预热:将源站资源主动加载到 CDN 节点,避免用户首次访问回源慢。

常见配置坑点

  • 优先级问题:若未开启跟随源站,控制台配置优先级高于源站;若开启跟随源站,则以源站响应头为准。
  • 同名更新风险:若未改文件名直接覆盖源站文件,缓存期内用户仍访问旧数据,需配合刷新操作。
  • 参数忽略:若 URL 带参数,需确认是否开启忽略参数缓存,否则命中率低。