网站收录检测时看到的“未收录”或“已收录”,有时只是缓存或旧快照造成的假象。判断的关键是:先确认你看到的页面内容、状态码和抓取时间是否来自当前服务器,再用不带缓存的请求和搜索引擎自身的抓取工具交叉验证,而不是直接相信浏览器或第三方工具的第一眼结果。
多人协作时最常见的返工,是A看到旧页面说没收录,B看到新页面说已收录,双方都没错,只是观察对象不同。缓存假象通常来自三处:
这三类的处理方式不同,混在一起判断就会得出错误结论。
第一步不是查收录,而是确认“服务器现在返回什么”。在命令行执行:
curl -I -H "Cache-Control: no-cache" https://example.com/page
看三个值:HTTP状态码是否为200、Cache-Control或Age响应头是否表明命中了缓存、Last-Modified或ETag是否与你最近一次发布一致。如果Age数值很大,说明中间缓存层仍在提供旧副本。
适用条件:你能访问服务器或至少能发出HTTP请求。判断结果:状态码200且响应头无异常缓存标记,才说明线上是当前版本;否则先解决缓存,再谈收录。
确认线上是当前版本后,再判断收录状态。这两件事必须分开:
如果日志显示最近有抓取,但搜索结果仍是旧标题,多半是索引缓存滞后;如果日志里根本没有该URL的抓取记录,问题在发现和抓取环节,与缓存无关。这里要提醒:robots.txt的抓取限制不等于可靠的索引移除,站点地图提交也不保证收录,两者都不能用来推断“一定已收录”或“一定没收录”。
确认是缓存问题后,按层处理:
max-age,发布流程中应让HTML本身短缓存或不缓存。多人协作时,建议在交付记录里写清:检测时间、使用的请求方式、看到的状态码、抓取日志时间。这样复查的人能复现你的观察,而不是各说各话。
处理完缓存后,隔一段时间复查。复查要满足两个条件:一是用与首次不同的请求路径(例如换网络、换工具),二是核对搜索引擎侧的实际抓取时间是否更新。如果两个来源都显示新版本,才能判定缓存假象已排除。
假设某页面周一更新,周二检测显示未收录,周三清除CDN缓存并请求重新抓取,周四日志出现新抓取、搜索结果标题更新——这才算闭环。若周四日志仍无新抓取,则应回到抓取和索引环节排查,而不是继续怀疑缓存。
下一步:为你当前正在检测的那个URL,先跑一次curl -I并记录状态码与缓存响应头,再和搜索引擎抓取日志的时间对比,确认差异出在哪一层。