读懂缓存状态响应头
HIT、MISS、EXPIRED、STALE、REVALIDATED、BYPASS——这些状态说的是不同的事,混着看会得出错误结论。
6 分钟缓存与命中

要点
MISS 是「没有副本」,EXPIRED 是「有副本但过期」,BYPASS 是「规则明确要求不缓存」。三者的修复方向完全不同。
各状态的含义
各家的响应头名字不一样
X-Cache: HIT
CF-Cache-Status: HIT
X-Cache-Status: HIT
Cache-Status: "cdn"; hit # RFC 9211 标准写法RFC 9211 定义了标准的 Cache-Status 响应头,新厂商逐渐在支持,但自有的 X- 头仍然更常见。看自己站点时以厂商文档为准。
排查顺序
先分清 MISS 和 BYPASS
MISS 说明缓存机制在工作、只是这次没有副本,多请求几次就会变 HIT。BYPASS/DYNAMIC 说明这个资源根本没在被缓存——再请求一万次也不会变 HIT。看到 BYPASS 就该去查缓存规则和 Set-Cookie,而不是纠结命中率数字。
- 同一 URL 连续请求两次:第二次仍是 MISS 说明副本没被存下来;
- 检查响应里有没有 Set-Cookie——它会让多数 CDN 直接判定不可缓存;
- 检查 Cache-Control 里有没有 private / no-store;
- 检查有没有意外的 Vary。
在你的网站验证
边缘核验从多个地区读取你的缓存状态响应头