主站走 A 厂商、图片走 B 厂商,换图后一部分用户看到新图,另一部分还是三天前的旧图,两边 Last-Modified 差了两天。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,换图只调了 A 厂商的刷新接口,B 厂商的边缘还留着旧对象。两家 TTL 配置也不一致,自然过期时间对不上。

「多 CDN 版本不一致」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

curl -sI https://img1.example.com/a.jpg | grep -i etag
curl -sI https://img2.example.com/a.jpg | grep -i etag
# 两个 etag 应一致

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

具体做法是,把两个厂商的刷新调用放进同一个发布脚本,任一失败就报警;统一两边的缓存 TTL 和缓存键规则;发布后各取一个节点对比 ETag,确认是同一份文件。

最后用这个标准收尾,两家 CDN 返回的 ETag 相同,抽查用户看到同一张图。

作者 9823189