先看一个可判定的信号:恢复后抓取请求的响应状态、响应体长度和抓取频率是否在同一个时间窗内同步变化。如果只有状态码变好,而响应体长度、抓取深度、请求间隔没有跟上,更可能是缓存过期;如果状态码、响应体、抓取路径三者一起回到正常区间,才接近真正修复。缓存过期是旧内容被清掉后露出了原本就不该出现的结果,真正修复是服务端行为本身变了。
缓存过期通常留下这样的痕迹:恢复时间点与缓存 TTL 或 CDN 刷新时间高度吻合;恢复前后响应头里的缓存标记发生变化;同一 URL 在不同 IP 或不同 UA 下表现不一致。真正修复的证据链则相反:恢复时间点与代码发布、配置变更、回源逻辑调整的时间吻合;不同来源的抓取请求表现一致;响应体内容、状态码、抓取深度同时改善。
把这两条链分开记录,是后续判断的基础。建议在搜索引擎抓取日志里按 URL 分组,标出每个 URL 的首次异常时间、恢复时间、恢复前后的状态码和字节数。这个动作的结果会直接影响下一步:如果恢复时间点分散且与缓存刷新时间对不上,就该继续查服务端;如果恢复时间点集中且紧贴缓存操作,就要先怀疑缓存。
当恢复时间点紧贴缓存刷新、CDN 清除或 TTL 到期,优先按缓存过期处理,不要急着宣布修复完成。此时应做的动作是:在缓存刷新后重新发起一轮抓取,观察同一批 URL 在新时间窗内的表现。如果刷新后再次出现异常,说明原始问题仍在,缓存只是暂时遮住了它。
这个选择成立的条件是:你能拿到缓存层的操作记录或 TTL 配置。拿不到时,不要凭时间巧合下结论。例外情况是,如果异常 URL 集中在动态接口或带查询参数的地址上,缓存解释力会下降,因为这些地址通常不按静态资源缓存,更可能是回源逻辑本身的问题。
当恢复时间点紧贴代码发布、配置变更或回源调整,优先按真正修复处理,但仍要用抓取日志验证一致性。具体动作是:在变更后连续观察多个抓取周期,比较恢复前后的响应体长度、抓取深度和请求间隔。如果三者稳定在新水平,而不是短暂跳变后回落,修复可信度更高。
这里的关键依据是稳定性,而不是单次恢复。单次恢复可能只是抓取调度波动或临时限流解除。例外情况是,如果变更只影响部分路径,而日志里其他路径也同步恢复,就要怀疑恢复来自缓存或上游,而不是这次变更本身。
假设某目录页在异常期间返回 500,三天后恢复 200。日志显示恢复集中在同一小时,且该小时正好有一次 CDN 刷新。此时若只看状态码,会误判为修复。继续查响应体长度,发现恢复后的字节数仍明显低于异常前,说明页面内容并未完整回来,缓存过期解释更合理。
反过来,假设恢复时间点与一次回源逻辑发布吻合,且恢复后字节数、抓取深度、请求间隔都回到异常前区间,并在后续多个抓取周期保持稳定,这时按真正修复处理更稳妥。这个例子的数字只用于说明比较方法,不代表任何真实项目结果。
请求量或抓取量归零不能单独证明处理正确。它也可能来自抓取预算调整、robots.txt 临时限制、站点地图未被采用,或搜索引擎自身调度变化。robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 不保证安全无漏洞或排名。不同搜索引擎对这些信号的支持情况须分别核查。
因此,判断缓存过期还是真正修复,至少要同时看三样:恢复时间点与哪类操作吻合、响应体是否完整、后续抓取周期是否稳定。只有三样都指向同一方向,才适合把结论写进交接记录并进入下一步验证。