---

title: HTTP缓存治理之Cache-Control与ETag协同

keywords:

  • Cache-Control
  • ETag
  • If-None-Match
  • immutable
  • Vary

description: 通过响应缓存指令与条件请求协同,既提升命中率又保证内容一致,规范代理与浏览器的再验证策略。

categories:

  • 文章资讯
  • 技术教程

---

HTTP缓存治理之Cache-Control与ETag协同

概览

  • Cache-Control 管理新鲜度与再验证;ETag/If-None-Match 提供条件 GET 与 304 协商。
  • 对静态不可变资源使用 max-age+immutable;对频繁变更资源配合再验证与版本别名。
  • 结合 Vary 控制按请求维度分桶,避免错误共享与污染。

技术参数(已验证)

  • 新鲜度:Cache-Control: public, max-age=<seconds>, immutable 用于指纹化静态资源;动态响应使用 no-cache 支持再验证。
  • 条件:客户端携带 If-None-Match;服务端比较强/弱 ETag,匹配返回 304 并保留实体标签。
  • 代理:为 CDN 设置 s-maxagestale-while-revalidate/stale-if-error;严格区分代理与浏览器策略。
  • 维度:使用 Vary: Accept-Encoding, User-Agent 等维度控制缓存键;避免不必要的高基数维度。
  • 一致性:更改实体时更新 ETag;避免与 Last-Modified/If-Modified-Since 的歧义配置。

实战清单

  • 为静态资源启用长效缓存与 immutable;动态接口使用条件请求与 304 协商。
  • 在 CDN 配置 s-maxage 与容错扩展;验证 Vary 维度与命中率。
  • 建立缓存观测与命中仪表盘;在发布管线管理指纹与别名。
  • Importance: 平衡命中率与一致性,减少带宽与延迟并避免污染。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部