排除缓存造成的假象,核心做法是让每一次观察都能对应到一次真实请求:先确认你看到的内容来自源站还是中间缓存,再用带唯一参数的 URL、禁用缓存的请求头和源站日志交叉验证。如果同一路径在日志里没有对应请求,却能在浏览器或抓取工具里看到旧内容,那多半是缓存回放,而不是爬虫控制规则真的生效了。
多人协作时最常见的返工,是把缓存结果当成规则生效的证据。典型假象有三类:
robots.txt 或 meta 标签,看到的却还是改之前的状态。这三类的共同点是:现象稳定、可重复,但源站没有对应的新请求记录。判断方向应当从“规则是否写对”转向“这次观察是否真的到达源站”。
最直接的可执行步骤,是给测试 URL 加一个每次不同的查询参数,并显式要求不使用缓存:
?cachebust=时间戳或随机串,例如 /test-path?cachebust=20240521a。查询参数不同,多数缓存会视为不同资源。Cache-Control: no-cache 和 Pragma: no-cache,向中间层表达“要回源核对”。Age、X-Cache、CF-Cache-Status 一类字段(字段名取决于你实际使用的服务,需自行核对当前文档)。判断结果:如果响应头显示命中缓存、Age 大于 0,且源站日志没有这次请求,就可以定位为缓存回放;如果源站日志有对应记录,响应内容仍与预期不符,才需要继续查爬虫控制规则本身。
为了让协作方拿到结论就能复现,建议按下面四项留痕:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。清理缓存只能解决“看到旧状态”的问题,不能替代对抓取与索引规则本身的核查。
多人协作时,减少返工的关键是统一验证口径。可以约定:任何关于爬虫控制的结论,都必须附带一次带唯一参数的请求记录和一条源站日志。没有这两项,结论只能标记为待验证。这样即使不同成员使用不同工具,也能围绕同一份证据判断,而不是各自看到不同缓存副本后反复争论。
下一步,挑一个当前存在争议的路径,按上面的唯一 URL 方法重新请求一次,把响应头和源站日志并排保存,再决定是清理缓存还是修改爬虫控制规则。