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

发表评论 取消回复