如何设置缓存过期时间?
参考资料
如何设置缓存过期时间?
CDN缓存过期时间设置详解
CDN缓存基本原理
CDN(内容分发网络)通过边缘节点缓存资源,设置合理的缓存时间可显著提升网站性能。缓存过期时间决定CDN节点保留资源副本的时长。
主流CDN平台设置方法
1. 阿里云CDN
操作路径:
控制台 > CDN > 域名管理 > 缓存配置
配置项:
默认缓存规则:设置全局默认缓存时间
目录缓存:按目录路径设置不同缓存时间
后缀名缓存:按文件类型设置缓存时间
精确URL缓存:为特定URL设置独立缓存时间
示例配置:
/*.html -> 缓存0秒(即时生效) /*.js -> 缓存31536000秒(1年) /images/* -> 缓存86400秒(1天)
2. 腾讯云CDN
操作路径:
控制台 > CDN > 域名管理 > 缓存配置
特性:
支持
缓存继承
(跟随源站Cache-Control头)可设置
强制缓存
(忽略源站头)提供
缓存键规则
配置
示例配置:
文件类型为 .css/.js -> 缓存1年 路径包含 /static/ -> 缓存30天 其他 -> 遵循源站(默认7天)
3. AWS CloudFront
配置方式:
通过
Behaviors
设置缓存策略支持基于查询字符串/headers/cookies的缓存区分
TTL设置:
Minimum TTL
Maximum TTL
Default TTL
示例JSON配置:
"CachePolicy": { "DefaultTTL": 86400, "MaxTTL": 31536000, "ParametersInCacheKey": { "EnableAcceptEncodingGzip": true } }
最佳实践设置方案
静态资源缓存策略
文件类型 缓存时间 配置示例 -------------------------------------------------- HTML 0-300s Cache-Control: no-cache CSS/JS 1年 Cache-Control: public, max-age=31536000 图片 1年 Cache-Control: public, max-age=31536000 字体 1年 Cache-Control: public, max-age=31536000
动态内容缓存策略
/api/data?id=* 60s Cache-Control: private, max-age=60 /user/profile 300s Cache-Control: private, max-age=300
高级缓存控制技巧
版本化资源:
<link href="/css/style.css?v=1.2.3" rel="stylesheet">
缓存自动清理:
阿里云:通过API调用刷新缓存
腾讯云:支持目录刷新和URL刷新
AWS:支持Invalidation Path设置
边缘逻辑处理:
# 边缘节点配置示例 location ~* \.(js|css)$ { add_header Cache-Control "public, max-age=31536000, immutable"; }
验证缓存是否生效
使用curl检查:
curl -I https://example.com/static/js/app.js
浏览器开发者工具:
查看Network标签中的响应头
检查
Age
头显示资源已缓存时间专用检测工具:
WebPageTest
Catchpoint
KeyCDN的缓存检查工具
常见问题解决方案
问题1:更新后CDN不生效
解决方案:立即刷新对应URL缓存或等待TTL过期
问题2:动态内容被缓存
解决方案:设置
Cache-Control: private, no-store
问题3:不同地区缓存不一致
解决方案:检查CDN的全球同步配置,或提高刷新频率