页面内容三个月前改过,GSC 网址检查里显示的 HTML 快照还是旧版,点测试实际网址返回的也是旧标题,浏览器里看却是新版,日志里蜘蛛两天前来过。

一开始怀疑是「网址检查展示的是最近一次成功抓取的缓存,不是实时」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。CDN 对 HTML 设了长缓存,蜘蛛拿到的是边缘旧副本。也可能是页面按 UA 返回不同内容,测试工具拿到的不是蜘蛛那份。

还有一种情况,全页缓存插件的缓存键没带版本号。

先对比不同 UA 拿到的 HTML

curl -s -A 'Googlebot' https://www.example.com/post/1 | grep -o '<title>[^<]*'

随后看响应头里的缓存命中状态

curl -sI https://www.example.com/post/1 | grep -Ei 'age|x-cache|cache-control'

然后清掉 HTML 缓存并缩短 TTL

curl -X PURGE https://www.example.com/post/1

等前面都确认过,再核对页面的最后修改时间

curl -s https://www.example.com/post/1 | grep -o 'last-modified[^,]*'

恢复的判定其实很直接。蜘蛛 UA 与浏览器拿到同一份 HTML,X-Cache 显示 MISS 后回源,网址检查的快照更新为新标题。

网址检查展示的是抓取缓存,想验证线上真实内容要用测试实际网址,两者经常不是一回事。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189