要排除缓存造成的假象,核心做法是:不要只看一次抓取或一个界面显示的结果,而是用“带时间戳的原始响应”和“百度侧的抓取记录”交叉验证。如果页面内容、状态码或收录状态在短时间内反复变化,先怀疑缓存,再去找直接证据;只有多个独立来源在同一时间点给出相同结果,才能把它当成真实状态,而不是缓存回放。
假设你更新了某个页面的标题和正文,希望加快百度收录。提交后你打开浏览器,看到的仍是旧标题;但用另一台设备或无痕窗口访问,看到的却是新标题。此时不能直接判断“百度没收录新版本”,也不能判断“已经收录了”。更合理的解释是:其中一次访问命中了缓存。
可以按下面顺序收集证据:
curl -I只取响应头,查看Cache-Control、Expires、Age、ETag、Last-Modified。这些字段能说明响应是否被缓存、缓存了多久。常见错误是:只刷新一次页面就下结论,或者把浏览器缓存、CDN 缓存、百度搜索结果页缓存混为一谈。它们的影响范围不同,排查入口也不同。
浏览器缓存只影响你自己的设备。表现是同一网络下旧内容反复出现,换设备或无痕窗口就正常。判断依据是响应头里的缓存字段和本地强制刷新后的变化。
CDN 或反向代理缓存影响多个访问者。表现是不同地区、不同网络看到不同版本,或者源站已更新但边缘节点仍返回旧内容。判断依据是对比源站直连响应和经过 CDN 的响应,重点看 Age 和 X-Cache 一类头部字段。注意,不同服务商的头部字段名称不同,以实际响应为准。
百度搜索结果页缓存影响的是搜索结果摘要和快照。它不等于百度索引里的正文没有更新。判断依据是搜索资源平台里百度抓取到的内容,而不是你自己在结果页看到的摘要。摘要更新慢,不能直接等同于收录失败。
下面这些检查项可以直接执行,每项都要记录时间和结果:
200,而不是 304 或 5xx。304 表示内容未修改,可能是缓存校验造成的假象。Last-Modified 是否晚于你最后一次发布的时间。若早于发布时间,说明返回的可能是旧版本。判断结果时要注意适用条件:如果版本标记本身是动态生成的,或者页面依赖 JavaScript 渲染,那么抓取诊断看到的 HTML 可能和浏览器看到的不同。这时要区分“抓取到的原始 HTML”和“渲染后的页面”,不能只用浏览器截图作为证据。
确认不是缓存假象后,再处理收录问题才有意义。此时可以检查:页面是否返回 200、是否被 robots.txt 误拦、是否有 noindex、内链是否可达、站点地图是否只包含可索引的规范网址。需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 也不保证安全无漏洞或排名提升。这些都要分别核查,不能互相替代。
下一步建议:选一个你怀疑被缓存掩盖的页面,按上面的检查项做一张时间线表,先确认源站、CDN 和百度抓取三者是否一致,再决定是清缓存、改响应头,还是继续排查抓取与索引问题。