结论:要排除缓存造成的假象,不能只看一次页面输出,而要用“多环境、多请求头、多时间点”交叉比对。对高外链域名来说,外链带来的抓取和访问更频繁,缓存层也更容易把旧内容、旧跳转或旧状态码反复返回给爬虫,因此必须把源站响应与缓存响应分开验证。适用前提是:你已经有页面或项目,只是怀疑当前看到的结果不是源站真实状态。验收信号是:同一URL在带不同缓存绕过参数、不同User-Agent、不同出口IP时,源站返回一致,且缓存命中与回源结果可解释。
缓存造成的假象通常不是单一原因。可能来源包括:CDN或反向代理返回旧HTML;浏览器本地缓存让你看到旧页面;搜索引擎抓取缓存或快照尚未更新。三者要分开查,不能因为清除了浏览器缓存就断定搜索引擎也会立刻更新。
在命令行中分别请求同一个URL,观察状态码、cache-control、age、x-cache、cf-cache-status等字段。不同平台字段名不同,以实际响应为准。重点不是记住某个字段,而是判断“这次响应来自缓存还是源站”。
可以按下面步骤执行:
?cachecheck=1,再请求一次。若内容变化,说明缓存键可能包含查询参数。Cache-Control: no-cache请求头,观察是否回源。若仍返回旧内容,继续查CDN规则或源站。判断结果:如果带查询参数后内容更新,而不带参数时仍旧,说明缓存层按完整URL缓存,旧URL需要刷新或等待过期。如果带no-cache仍不更新,问题更可能在源站、数据库或发布流程,而不是边缘缓存。
高外链域名往往有大量外部链接指向不同URL,缓存假象容易表现为:外链指向的旧URL仍返回200,但内容已变;或者旧URL被缓存成301,而源站已经改为新路径。此时要分别核查:
robots.txt的抓取限制不等于可靠的索引移除;站点地图不保证收录。因此不能用“提交了站点地图”或“robots里屏蔽了”来代替缓存排查。若怀疑索引侧未更新,应通过搜索平台提供的URL检查工具分别核查不同搜索引擎的支持情况,而不是假定一家更新另一家也会同步。
当以下条件同时满足,可以认为缓存假象已基本排除:源站直接响应与绕过缓存后的响应一致;缓存响应头显示回源或过期时间合理;外链落地URL与源站状态码、正文一致;在不同网络和不同请求头下结果可重复。
下一步:挑一个受缓存影响最明显的高外链落地URL,按上面的三步请求法记录响应头,再决定是刷新缓存、调整缓存键,还是修改源站发布流程。