替换了首页 banner,源站文件已经是新的,浏览器无痕打开还是旧图。响应头里 Cache-Control 是 max-age=604800,Age 已经 432000,边缘节点缓存了五天。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,图片地址没带版本参数,CDN 把 URL 当作唯一缓存键,内容换了也命中旧对象。源站又给了七天强缓存,连回源都省了。
「图片 CDN 缓存未刷新」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。
curl -I https://cdn.example.com/wp-content/uploads/2026/11/banner.jpg | grep -iE 'age|cache-control' # 刷新单个 URL curl -X POST https://api.cdn.example.com/purge -d 'urls=https://cdn.example.com/.../banner.jpg'
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,换图时给文件名加内容哈希 或者拼一个版本参数;提交刷新任务 只刷这一个 URL 别整目录;把图片缓存时间调短 加 immutable 靠文件名变更失效。
最后用这个标准收尾,无痕窗口打开首页显示新 banner,响应头 Age 归零,x-cache 先 MISS 后转 HIT。
