事情本身不复杂,线索都在日志里。视频换了新封面,文件名保持不变,CDN 一直返回 304,搜索结果里的缩略图还是半年前那张,页面上的封面在浏览器强刷后是新的。
第一反应是「sitemap 里 thumbnail_loc 指向同一个地址,蜘蛛不会主动重取」,验证下来不成立。
排查方向其实有限,先把可能性排一排。封面文件名没变,CDN 按 ETag 判定资源未修改。还有一种是源站 Last-Modified 没有随文件更新而变化。
不容易想到的是,缓存 TTL 设成了三十天且没有主动刷新。
第一件事是确认封面响应里的缓存标识
curl -sI https://static.example.com/cover/1024.jpg | grep -iE 'etag|last-modified|age'
给封面地址加内容哈希并同步更新标记
curl -sI https://static.example.com/cover/1024-v2.jpg | head -1
主动清一次 CDN 缓存
curl -X PURGE https://static.example.com/cover/1024.jpg
更新 sitemap 里的 thumbnail_loc 与 lastmod
grep -A2 'video:thumbnail_loc' video-sitemap.xml | head
改完先别撤,确认这几项。封面返回 200 且 ETag 变化,缩略图地址与页面一致,sitemap 的 lastmod 更新后富媒体重新展示新图。
补一句。替换静态资源不要复用文件名,加哈希后缀比反复清缓存可靠,也不会被中间层缓存拦住。这类问题最好一次改到位,反复小改反而容易把原因搅混。
