Q01
no-store, max-age=600 允许缓存十分钟吗?
不允许。对于这条响应头,no-store 禁止存储和复用响应,max-age 不会添加存储许可。若要保留原策略并去掉无效指令,可简化成 no-store。
解析缓存指令,对比浏览器与共享缓存的新鲜度
每行输入一条响应头的 Cache-Control 值,查看新鲜度秒数、存储限制和提示。高级模式提供具体案例。
仅分析响应指令,不能单凭此头保证可缓存或实际命中。还需核对请求方法、状态码、Authorization、Vary、缓存条目及实现。模拟器假定你已提供当前响应年龄,不计算 Age/Date,不模拟 Expires、启发式新鲜度、请求指令、离线策略或完整扩展行为。
完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。
Cache-Control 解析器逐行读取响应头值,展示指令、存储限制与新鲜度信息。以 public, max-age=60, s-maxage=600 为例:浏览器的新鲜度时长为 60 秒,共享缓存则为 600 秒,两者可以正常并用。对于 no-store, max-age=600,max-age 不会带来存储或复用许可;若目标仍是禁止存储,可简化为 no-store。private, no-cache 在满足其他条件时允许私有缓存存储,但每次复用前必须成功验证。模拟结果只是对部分指令的解释,不能证明真实浏览器或 CDN 一定会缓存响应。工具不完整建模请求、响应状态、Authorization、Vary 匹配、CDN 覆盖规则,也不模拟依赖状态码的 must-understand 例外。所有解析均在浏览器本地完成。
no-store
适合要求缓存不得保存或复用响应的场景。
private, no-cache
适合允许私有缓存保存,但每次复用前都必须成功验证的场景。
补充:示例使用不带参数的指令,且假定不存在依赖状态码的 must-understand 等覆盖规则。no-store 是缓存指令,不是完整的隐私保护保证。
Q01
不允许。对于这条响应头,no-store 禁止存储和复用响应,max-age 不会添加存储许可。若要保留原策略并去掉无效指令,可简化成 no-store。
Q02
不矛盾。在 public, max-age=60, s-maxage=600 中,浏览器的新鲜度时长为 60 秒,共享缓存的新鲜度时长为 600 秒;能否存储仍取决于完整请求和响应。
Q03
可以。immutable 描述响应仍新鲜时的复用,must-revalidate 则要求陈旧响应必须成功验证后才能复用。它们针对不同阶段,本身不矛盾。
Q04
工具不建模请求方法、响应状态、Authorization、Vary 匹配、验证器、CDN 配置、Expires 或启发式新鲜度,也不模拟 must-understand:理解相应状态码缓存要求的缓存,在特定条件下可以忽略 no-store。带字段参数的 private/no-cache、非法或重复的新鲜度数值会返回 UNKNOWN。仅凭响应头分析不能证明真实请求会命中缓存。
原因:Cache-Control 值无法描述请求、响应状态、缓存键、Authorization 处理或缓存配置。
修复:结合完整请求响应及实际缓存状态验证,把工具结果用作指令层面的说明。
原因:新鲜度判断采用严格小于:当前年龄必须小于新鲜度时长。
修复:对于 max-age=60,年龄 59 秒仍新鲜,60 秒已经陈旧;是否验证或允许陈旧复用需要另行判断。
原因:Expires 或启发式新鲜度可能在这个头部之外提供时长。
修复:此时应说明仅凭 Cache-Control 无法判断新鲜度,并检查其余响应头。
目标:移除无效的新鲜度指令,同时保持禁止存储。
结果:对这个具体示例,简化后的 no-store 仍禁止缓存存储和复用响应。
HTTP
Cache-Control: no-storeHTTP
Cache-Control: public, max-age=60, s-maxage=600HTTP
Cache-Control: private, no-cache在 no-store, max-age=600 中,no-store 禁止存储和复用响应,max-age 不会覆盖这项限制。若仍要禁止存储,清理后应保留 no-store。依赖状态码的 must-understand 例外不在本工具模拟范围内。
可以。public, max-age=60, s-maxage=600 为浏览器设置 60 秒新鲜度,为共享缓存设置 600 秒新鲜度。它们作用于不同范围,不属于 TTL 冲突。
这里不带参数的 private 排除共享缓存存储。在满足其他条件时,私有缓存可以保存响应,但 no-cache 要求每次复用前都成功验证,不能把它理解成禁止存储。
不能。存储和复用还依赖请求方法、响应状态、Authorization、Vary、验证器及缓存实现和配置。理解特定状态码缓存要求的缓存还可能通过 must-understand 忽略 no-store;工具不模拟该例外。
工具将输入的响应年龄与显式新鲜度时长比较:只有年龄严格小于时长才算新鲜,等于时长时已经陈旧。没有可用的 max-age 或 s-maxage 时,仅凭此头无法判断新鲜度;工具不计算 Expires 或启发式新鲜度。
支持。每行作为一条独立响应的 Cache-Control 值分析,不会把多行合并成一个响应;所有解析均在浏览器中完成。
继续浏览