HTTP / 请求调试

Cache-Control 头生成器看清浏览器与共享缓存的区别

粘贴响应头,或通过表单组合指令;用假定当前年龄查看两种缓存的新鲜期。

Cache-Control 头生成器

响应 Cache-Control

头部和表单内容仅在当前浏览器处理,不向源站发送请求。

当前结果头部

浏览器/私有缓存

在本年龄算例中仍新鲜

max-age:寿命 3600 秒

剩余新鲜期:3600 秒

共享缓存/CDN

在本年龄算例中仍新鲜

s-maxage:寿命 86400 秒

剩余新鲜期:86400 秒

按这些指令,过期后需要验证才能复用。

假设响应已被存储,并使用下方填写的年龄。新鲜不等于可以存储或复用,其他头部与平台规则仍会影响行为。

填写 0 至 2147483648 的假定 current_age。仅靠 Age 头不能包含完整传输与驻留时间;这里是静态算例。

解析出的指令

public

在满足其他缓存条件时,允许共享存储。

第 1 行,第 16 列

max-age=3600

私有缓存,以及没有 s-maxage 的共享缓存的新鲜期。

第 1 行,第 24 列

s-maxage=86400

覆盖共享缓存的 max-age,不影响浏览器寿命。

第 1 行,第 38 列

已显示 3/共 3 个指令

策略提示

已建模的指令未发现问题;这不代表部署已验证。

3 个指令 · 0 条策略提示

同一个资源在浏览器里已经过期,在 CDN 缓存中却可能仍然新鲜。Cache-Control 头生成器把这两层分开呈现,适合排查更新延迟,或在给静态资源设置策略前检查自己的理解。

作为 HTTP 缓存策略生成器,它同时提供 Cache-Control 解析入口。解析保留原有扩展和重复项;表单用来构建另一份策略,两种输入互相独立,切换不会把不认识的指令丢掉。

为什么使用 Cache-Control 头生成器

保留需要追查的线索

Cache-Control 头生成器不会把解析结果强行塞回几个复选框。比如 private="X-Foo, X-Bar" 中的逗号属于参数,重复的 max-age 也可能是配置叠加的证据;这些内容会留在指令列表中供你检查。

头部拆成保留原参数的指令卡片,旁边是独立的构建控件。

把两种寿命放在一起比较

默认示例的 max-age 为 3600 秒,s-maxage 为 86400 秒。把假定当前年龄改成 4000 秒,浏览器示例已过期,共享缓存仍剩 82400 秒新鲜期。这个差异不代表请求一定命中缓存。

浏览器与共享缓存使用不同长度的新鲜期轨道,并对照同一个年龄标记。

先分清输入来源,再调整寿命

01

只粘贴相关头部

可以输入一行裸头值,也可以输入多行带 Cache-Control: 的字段。夹有 Age 或 ETag 的完整响应块会被拒绝,避免只处理一部分却让你误以为全部检查过。

02

留空与零要分别考虑

构建表单中,时间字段留空会省略该指令,填写 0 则明确输出零秒。载入示例和清空都会先显示替换预览;应用后可撤销一次,同时恢复两种输入、年龄和结果。

03

用年龄测试边界

假定当前年龄是静态秒数,不是实时倒计时。自动分析在停止编辑 350 毫秒后执行;关闭后可点按钮或按 Ctrl/Cmd + Enter。输入变化立即禁用旧结果的复制和下载。

从指令原文追到缓存行为

逐条显示原参数

指令名按不区分大小写解析,输出统一小写;参数拼写、引号、顺序和重复项保留。空逗号成员会跳过。每个条目带行列位置,方便追查多个配置层拼出的头部。

组合常见响应指令

表单包含九个开关,以及 max-age、s-maxage、stale-while-revalidate、stale-if-error 四个时间字段。秒数限定为 0 至 2147483648 的整数。冲突组合仍然可见,不会自动删除你勾选的项。

分别解释存储与复用

浏览器缓存通常依据 max-age,共享缓存有 s-maxage 时优先采用它。普通 no-cache 要求复用前验证,普通 no-store 禁止存储;正的新鲜期本身无法证明响应满足全部存储条件。

把不确定性写在结果里

未知扩展、带字段列表的限制和 must-understand 会显示需要上下文。已知指令重复或参数非法时,工具不输出确定的剩余秒数。列表每次显示 50 项,复制和文本下载仍包含全部当前头部。

单个响应头能说明什么

仅针对响应 Cache-Control
不抓取 URL,不执行请求,不联合求值 ETag、Vary 或 Expires。请求专用指令会原样保留并提示范围;不生成服务器配置片段,也不接收批量头部文件。
新鲜期算例不是实际到期时间
寿命减去假定当前年龄的算例没有计算 Date 校正、传输延迟或驻留时间。缺少 max-age 或 s-maxage 时显示未给出可计算寿命;外部仍可能有 Expires 或启发式缓存。
不能验证厂商最终策略
CDN 平台规则、认证信息、状态码和缓存键都会影响实际行为。没有诊断提示不等于通过生产验收;本工具也不清理缓存、不保证缓存命中或不同浏览器表现一致。
有限输入与保守推断
输入最多 16384 个 UTF-16 单元、128 个指令。语法错误会定位并禁用导出。解析到超出范围的秒数时保留原文并放弃数值推断;生成秒数和假定年龄上限均为 2147483648。
过期宽限不会延长新鲜期
stale-while-revalidate 和 stale-if-error 描述过期后的条件复用,不会被加到新鲜期里。出现重新验证限制时会额外提示;工具不保证某个实现会在宽限窗口内返回旧响应。

Cache-Control 头生成器常见问题

no-cache 与 no-store 的区别是什么?

普通 no-cache 允许存储,但每次复用前必须成功验证;普通 no-store 要求不存储该响应。前者不是“完全不用缓存”的同义词,后者也不是删除所有既有缓存副本的指令。

max-age 与 s-maxage 分别控制哪些缓存?

max-age 适用于私有缓存,也用于没有 s-maxage 覆盖的共享缓存。s-maxage 为共享缓存指定寿命,并要求过期后验证,不会延长浏览器的新鲜期。年龄示例分别显示这两个结果。

immutable 会怎样影响资源缓存?

immutable 表示资源在新鲜期内不会改变,可减少普通重新验证。它不提供寿命,也不意味着永不请求源站;强制刷新可能覆盖该行为,过期后仍要按正常规则处理。其参数被忽略,重复出现等同一次。

public 和 private 应该如何选择?

允许多个用户共享的资源可考虑 public,面向单个用户的响应通常需要 private 等限制,但必须结合认证和业务内容判断。private 不等于加密,public 也不保证所有响应都会被缓存。字段限定形式需要额外处理。

生成的缓存策略能直接部署到正式环境吗?

生成结果是头部文本,不能代替部署验收。应核对真实响应、平台覆盖规则及不同请求上下文,再检查缓存是否按预期工作。默认一小时/一天仅用于展示差异,不是所有正式环境的推荐值。

发现问题?

把策略核对清楚再部署

Cache-Control 头生成器:带入实际头部,调整假定年龄,再对照两种缓存的新鲜期,确认后复制。