CDN 缓存过期时间没有绝对固定的秒数,需根据资源更新频率决定。通常静态资源建议 7-30 天,带版本号的静态文件可设 1 年,动态内容设为 0-60 秒或不缓存。
先说结论:缓存时间取决于资源更新频率,静态资源宜长,动态内容宜短。默认策略通常为 3600 秒,但建议按业务调整。
- 适合:图片、CSS、JS 等不常变动的静态文件设置较长时长
- 先准备:确认资源是否采用文件名指纹化或版本号管理
- 验收:通过 curl 命令检查响应头中的 Cache-Control 字段
- 注意:若开启“跟随源站”,源站 Header 优先级高于 CDN 控制台配置
核心原理
CDN 缓存的核心是 TTL(生存时间),决定了节点存储副本的有效时长。未过期直接返回,过期则回源。设置过短会增加源站负载,设置过长可能导致用户获取旧数据。不同厂商默认策略不同,有的默认 3600 秒,有的默认 30 天,需根据业务调整。
主流云厂商配置路径
不同云厂商控制台界面略有差异,但核心配置路径相似:
- 阿里云:CDN 控制台 -> 域名管理 -> 选择具体域名 -> 缓存配置 -> 缓存过期时间 -> 添加规则。
- 腾讯云:CDN 控制台 -> 域名管理 -> 选择具体域名 -> 缓存配置 -> 缓存过期时间 -> 添加规则。
在配置页面,可按文件后缀名添加规则,例如 jpg,png,css,js 设置为 2592000 秒(30 天),动态文件如 php,jsp 设置为 0 秒或不缓存。
不同场景缓存策略推荐
| 资源类型 | 建议时长 | 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 带参数,需确认是否开启忽略参数缓存,否则命中率低。