HTTP缓存治理之Cache-Control与ETag协同
概览
Cache-Control 管理新鲜度与再验证;ETag/If-None-Match 提供条件 GET 与 304 协商。
- 对静态不可变资源使用
max-age+immutable;对频繁变更资源配合再验证与版本别名。
- 结合
Vary 控制按请求维度分桶,避免错误共享与污染。
技术参数(已验证)
- 新鲜度:
Cache-Control: public, max-age=, immutable 用于指纹化静态资源;动态响应使用 no-cache 支持再验证。
- 条件:客户端携带
If-None-Match;服务端比较强/弱 ETag,匹配返回 304 并保留实体标签。
- 代理:为 CDN 设置
s-maxage 与 stale-while-revalidate/stale-if-error;严格区分代理与浏览器策略。
- 维度:使用
Vary: Accept-Encoding, User-Agent 等维度控制缓存键;避免不必要的高基数维度。
- 一致性:更改实体时更新
ETag;避免与 Last-Modified/If-Modified-Since 的歧义配置。
实战清单
- 为静态资源启用长效缓存与
immutable;动态接口使用条件请求与 304 协商。
- 在 CDN 配置
s-maxage 与容错扩展;验证 Vary 维度与命中率。
- 建立缓存观测与命中仪表盘;在发布管线管理指纹与别名。
- Importance: 平衡命中率与一致性,减少带宽与延迟并避免污染。
发表评论 取消回复