Cache-Control 值会显示在这里
完整响应头建议会显示在这里
-
| 资源类型 | 建议 max-age | 相当于 |
|---|
指令说明
max-age 浏览器可缓存秒数;s-maxage 共享缓存(CDN)秒数,优先级高于 max-age
immutable 告知浏览器即使用户刷新也不必回源校验(仅用于内容永不变化的资源)
must-revalidate 过期后必须先校验;no-cache 每次使用前都校验;no-store 完全不存储
max-age 浏览器可缓存秒数;s-maxage 共享缓存(CDN)秒数,优先级高于 max-age
immutable 告知浏览器即使用户刷新也不必回源校验(仅用于内容永不变化的资源)
must-revalidate 过期后必须先校验;no-cache 每次使用前都校验;no-store 完全不存储
带内容哈希(如 app.3f9a1c.js)的资源可以放心设置一年缓存加 immutable;HTML 入口文件一定要短缓存或不缓存,否则用户永远拿不到新版本。这正是「入口不缓存、静态资源长缓存」的经典策略。
关于本工具
缓存策略直接影响两件事:用户打开速度,以及发版后用户能不能拿到新代码。Cache-Control 的指令虽然只有十来个,组合起来却很容易配错——最常见的事故就是 HTML 被长期缓存,导致发版不生效。
如何使用
直接点下方的预设按钮(HTML 文档 / 带指纹资源 / 不带指纹资源 / API / 完全不缓存)快速套用,或手动调整时长与指令,工具会生成 Cache-Control 值并给出配套响应头建议。
常见问题
max-age 和 s-maxage 有什么区别?max-age 管浏览器本地缓存,s-maxage 管 CDN 等共享缓存。设置 s-maxage 后,CDN 可以缓存更久而不影响浏览器行为。
改了文件但用户还是旧版?因为 HTML 被缓存了。把 HTML 设为 no-cache 或很短的 max-age,并给静态资源文件名加内容哈希,就能既快又不脏。
你可能还想问
强缓存和协商缓存怎么选?
带版本号的静态资源(js/css/图片)用强缓存 Cache-Control 加超长 max-age;HTML 入口页用协商缓存(no-cache + ETag),保证更新即时生效。
max-age 设多大合适?
不常变的资源可设 31536000(一年)配合内容指纹文件名;频繁变的接口响应设 no-cache 或短 max-age(60-300 秒)。
改了缓存头为什么用户还是旧的?
旧响应已被浏览器强缓存,新头只对之后的请求生效;发版时更新资源文件名(如加 ?v= 或 hash),入口 HTML 不做强缓存,是标准解法。
速查在线工具箱