百度爬虫抓取页面后,百度搜索可能仍展示旧标题、旧摘要或旧快照,这不一定说明爬虫没有来过。要排除缓存造成的假象,核心是分别核对“服务器是否收到百度爬虫请求”“百度索引里保存的是哪一版内容”“搜索结果展示是否只是缓存延迟”,而不是只看搜索结果页面就下结论。
缓存造成的假象常见于三种表现。第一种,页面源码已经更新,但百度搜索结果仍显示旧标题或旧描述。第二种,日志里出现了百度爬虫的访问记录,但搜索摘要还是旧内容。第三种,页面已经删除或改版,搜索结果仍能点开旧快照或旧链接。
这三种现象指向不同环节。标题摘要未更新,可能是索引缓存尚未刷新;日志有抓取但内容未变,可能是抓取的是旧版、被重定向到旧版,或返回了缓存页;旧链接仍可访问,可能是服务器仍返回 200 状态码,而不是 404 或 301。先定位现象属于哪一层,才能判断是不是缓存假象。
最直接的起点是查看 Web 服务器访问日志。筛选 User-Agent 中包含 Baiduspider 的记录,重点看目标 URL 的请求时间、返回状态码和响应大小。
日志判断只能说明百度爬虫是否请求过、服务器返回了什么,不能直接证明百度索引已经更新。它解决的是“爬虫到底有没有来、拿到的是哪一版”这个问题。
确认百度爬虫访问过之后,下一步是检查服务器和 CDN 是否向爬虫返回了旧缓存。可以在命令行用百度爬虫的 User-Agent 请求目标 URL,观察响应头中的缓存相关字段和实际正文。例如:
curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -I https://example.com/page
这里 example.com 只是示例占位,实际替换成自己的域名。重点看 Cache-Control、Expires、Age、X-Cache 等响应头,以及返回正文是不是当前版本。如果 CDN 或反向代理对爬虫返回旧副本,需要清理对应缓存或调整缓存规则,再让百度爬虫重新抓取。
还要区分 robots.txt 与索引移除。robots.txt 的抓取限制不等于可靠的索引移除:它可能阻止百度爬虫继续抓取,但已经建立的索引和搜索结果不一定因此立即消失。如果目标是让旧页面从搜索结果中移除,应优先让页面返回 404 或 301,而不是只改 robots.txt。
处理缓存后,复查要按顺序进行。先确认源站返回的是新版内容,再确认 CDN 和反向代理对百度爬虫返回的也是新版,然后观察服务器日志中百度爬虫是否再次抓取目标 URL。最后回到百度搜索结果查看标题、摘要和快照是否变化。
复查时不要用“提交站点地图”代替全部判断。站点地图不保证收录,它只是告诉百度有哪些 URL 可供发现。若页面本身返回错误状态、被 robots.txt 拦截或没有入口链接,站点地图也无法保证更新。HTTPS 同样不保证安全无漏洞或排名,它只是传输层条件之一。
如果多次抓取后搜索结果仍显示旧内容,可以检查是否存在多个 URL 指向同一内容、规范标签指向旧版、移动端与桌面端返回不同版本,或页面主体由 JavaScript 渲染而百度爬虫拿到的是空壳。这些情况都可能让百度索引保存的版本与用户浏览器看到的版本不一致。
第一次接触这个问题,建议先做一张最小核查表:目标 URL、百度爬虫最近一次访问时间、返回状态码、响应正文版本、CDN 缓存状态、搜索结果当前展示版本。每次修改后按同一张表复查,就能区分“爬虫没来”“爬虫来了但拿到旧缓存”“索引尚未刷新”这三种情况。下一步是选一个具体 URL,按这张表跑一遍日志和响应头检查,再决定是清缓存、改跳转,还是继续等待百度重新抓取。