先给结论:不要从“百度为什么没收录”开始查,而要先把同一URL在浏览器、CDN边缘、源站三个位置的实际响应体取出来对比。只要这三层返回的HTML正文或关键标记不一致,收录延迟的排查就应该先停在缓存一致性上,而不是继续改内容或提交入口。下面以你手里某一个具体页面为对象,给出一套可执行的处理顺序。
缓存不一致有一个很典型的信号:同一URL在不同时间、不同网络环境下返回的正文不同,但HTTP状态码都是200。常见表现是旧标题、旧价格、旧库存文案或已删除的模块仍然出现在某一次响应里,而刷新几次后又变成新版本。
要区分它和抓取问题的差别,可以看三点证据:
这里要提醒一个容易误判的点:抓取量或请求量下降,不能单独证明缓存处理正确。它也可能是抓取预算调整、站点整体活跃度变化或robots策略变化导致的,必须和响应体对比一起看。
假设你手里有一个商品详情页或资讯页,怀疑百度看到的不是最新版本。可以按下面的动作依次取样,每一步都记录时间、请求头和响应体摘要。
curl -I https://example.com/page 先看头,再用不带 -I 的请求取正文。这个动作的结果会直接决定下一步:如果源站和边缘不一致,问题在CDN缓存层;如果边缘和浏览器不一致,问题可能在浏览器缓存或中间代理;如果三者一致但百度仍显示旧版本,才需要转向百度侧的抓取与索引排查。
定位到缓存层之后,通常有两种做法,它们成立的条件和代价不同。
做法一:先清缓存,再观察。适用条件是确认边缘节点确实返回了旧版本,且你能定位到具体缓存键。代价是清缓存只解决当前这一份,如果缓存键设计或回源规则没改,同类页面会反复出现。清完之后必须继续比对边缘与源站,确认新版本是否稳定回源,否则下一步的观察没有意义。
做法二:先改缓存策略,再决定是否清。适用条件是多个页面同时出现版本分叉,说明问题在规则而不是单个节点。代价是改动影响面大,需要先在一个低流量路径上验证,确认回源频率和缓存键符合预期后再扩大。如果只改策略不清旧缓存,已存在的旧版本可能继续存活到过期。
选择依据可以简化成一句:单页异常优先清缓存并核对缓存键;批量异常优先查策略并做小范围验证。两种做法都不承诺收录时间,只影响百度下一次抓取时能拿到哪个版本。
假设某资讯页更新了标题,但边缘节点仍返回旧标题,源站已是新标题。此时可以先记录边缘响应的缓存标识和过期时间,再对比源站响应头中的缓存指令。如果源站允许较长缓存,而边缘又按旧规则缓存,那么新标题要等缓存过期或主动失效后才会一致。
处理动作可以是:先对这一个URL做缓存失效,再立即重新请求边缘地址,确认返回的是新标题。如果失效后仍然返回旧版本,说明中间还有一层没被覆盖,需要继续向上游查找。这个结果会影响下一步——是只处理这一个URL,还是把同类URL一起纳入检查。
需要说明的是,站点地图提交、主动推送或robots调整都不能替代缓存一致性修复。站点地图不保证收录,robots.txt的抓取限制也不等于可靠的索引移除。HTTPS同样不保证内容版本一致,它只解决传输加密,不解决多层缓存各自持有不同副本的问题。
为了让修复可验证,交接时至少带上:出问题的URL、三个位置的响应头摘要、正文差异点、取样时间,以及你期望的一致版本。不要只写“百度没收录”,那会把问题推回内容层。
修复完成后,重新做一次三层取样,确认同一URL返回一致。只有当一致性能稳定复现,后续观察百度侧版本变化才有意义;否则你看到的仍然是缓存层的随机结果,而不是收录延迟本身的变化。