# 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: 平衡命中率与一致性,减少带宽与延迟并避免污染。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部