缓存 · 排查路径

CDN 缓存没有命中时先检查什么

缓存未命中不等于 CDN 故障。先区分该资源是否可缓存、规则是否匹配,以及响应是否被源站主动禁止缓存。

排查步骤

查看、判断、复查

  1. 01

    记录响应中的 Cache-Control、Age、ETag、Vary 和 CDN 特征头。

  2. 02

    确认请求路径、查询参数、Cookie 与方法没有绕开缓存规则。

  3. 03

    检查源站是否返回 private、no-store 或会影响共享缓存的响应头。

  4. 04

    使用相同条件重复请求,比较命中标记和 Age 是否增长。

跟着示例核对

示例内容用于说明方法,非本站探测记录。复核于 2026-09-06。

模拟记录:同一 URL /index.html、同一请求头、无 Cookie
预期版本:release-b
HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Age: 120
ETag: "release-a"
页面中的版本标识:release-a

30 秒后重复请求:Age: 150,版本仍为 release-a

怎样解释结果

响应成功不代表新版本已生效。这个样例中的版本仍是 release-a;Age 增加只能辅助判断响应在缓存链路中的年龄,不能单独证明命中了某个特定 CDN 节点。max-age 是新鲜度时长,不是从当前请求开始的倒计时。

不符合预期时

先在受控环境确认源站部署确实是 release-b,再核对缓存键、Vary、Cookie 和请求条件。厂商 HIT/MISS 头需按对应官方文档解释;没有 Age 也不能断定请求已回源。不要为了排查把带用户数据的响应改成 public。

修改后复查

按服务商支持的方法更新缓存或使用新的版本化资源地址,再用同一 URL、相同请求条件核对正文版本及响应头。若源站也返回 release-a,先处理部署或回退;把修改动作和观察时间写进记录。