CDN中的客户端过期时间(Expires) 是HTTP响应头字段
参考资料
CDN中的客户端过期时间(Expires) 是HTTP响应头字段
CDN中的客户端过期时间(Expires) 是HTTP响应头字段,用于告知浏览器或客户端缓存资源的过期时间点。其核心机制如下:
1. 定义与作用
功能:服务器通过
Expires
头指定资源在客户端的绝对过期时间(GMT格式)。效果:客户端在首次加载资源后,若再次请求该资源且本地时间未超过
Expires
时间,则直接使用本地缓存,无需向CDN或源站发起请求。
2. 语法示例
Expires: Wed, 21 Oct 2025 07:28:00 GMT
资源将在
2025年10月21日 07:28:00 GMT
后失效,需重新向服务器验证。
3. 关键特性
绝对时间依赖:
客户端本地时间必须准确。若用户设备时间错误(如提前),可能导致缓存提前失效或延迟更新。HTTP/1.0遗留字段:
优先级低于HTTP/1.1的Cache-Control: max-age
(相对时间)。若两者共存,max-age
优先级更高。
4. 局限性
时间同步问题:
依赖客户端系统时间,时区或时钟错误会破坏缓存逻辑。静态资源适用性:
仅适用于长期不变的静态资源(如图片、CSS)。动态资源需用Cache-Control: no-cache
等更灵活策略。无法强制更新:
若资源在过期前修改,客户端仍会使用旧缓存,除非手动清除或修改URL(如添加版本号)。
5. 与Cache-Control对比
字段 | 类型 | 优先级 | 优势 |
---|---|---|---|
Expires | 绝对时间 | 低 | 语义明确 |
Cache-Control: max-age | 相对时间(秒) | 高 | 不依赖客户端时间,更可靠 |
实践建议
弃用趋势:
现代项目优先使用Cache-Control: max-age=3600
(例如缓存1小时),避免时间同步问题。兼容性处理:
如需支持旧浏览器,可同时返回Expires
和Cache-Control
,但确保max-age
逻辑为主。
⚠️ 注意:若需精确控制缓存,推荐结合
ETag
或Last-Modified
实现条件请求,而非仅依赖Expires
。