先核验抓取,再决定是否清缓存。临时维护页撤下后,服务器返回的已是正常页面,但百度侧可能仍保留维护页的抓取结果、快照或索引信号;此时清缓存只能清掉自己可控的缓存层,无法改变搜索引擎已记录的内容。正确顺序是:先确认线上响应与维护期是否一致,再判断哪些残留信号需要主动处理,最后才考虑缓存刷新。
假设某个百度推广URL在夜间维护了六小时,期间全站返回 503 并带 Retry-After,维护页是一个静态提示页。恢复后,运营做了三件事:把维护页从服务器删除、清空了 CDN 缓存、在百度搜索资源平台提交了首页抓取。三天后,该URL在百度快照里仍显示维护提示,移动端摘要也是维护文案。
这个情境里出现了三类残留信号,性质完全不同:
先清缓存还是先核验抓取,取决于你面对的是哪一层。如果只清缓存而不核验抓取,抓取层和索引层的残留不会自动消失;如果只核验抓取而不清缓存,蜘蛛下次来可能仍拿到旧的 503。
恢复后第一个实际动作,是用 curl -I 或浏览器无痕模式直接请求该百度推广URL,观察状态码、Cache-Control、Age 和响应体首屏内容。重点不是看“页面能不能打开”,而是看返回的是不是恢复后的正常页。
如果响应头里 Age 很大、X-Cache 显示命中,说明边缘节点还在吐旧内容,这时清缓存是必要动作。如果响应头正常、首屏也是恢复后的内容,但百度快照仍是维护文案,说明问题不在你的缓存层,而在抓取或索引层,清缓存不会带来变化。
这个动作的结果直接决定下一步:响应层干净,就进入抓取核验;响应层不干净,先修缓存再谈其他。
维护期返回 503 本身是合理做法,它告诉蜘蛛“暂时不可用,稍后再来”。但恢复后需要确认两件事:
如果最近一次抓取仍在维护窗口内,且之后没有新的成功抓取,那么快照和摘要停留在维护文案就有了合理解释。此时需要做的是让蜘蛛重新抓取,而不是反复清缓存。
这里有一个容易误判的点:抓取量短暂归零或下降,不能单独证明处理正确。它可能来自维护期的正常暂停,也可能来自抓取预算重新分配、站点其他路径占用、或蜘蛛调度周期本身波动。要结合最近抓取时间、状态码和响应内容一起看,不能只看一个数字。
另外,robots.txt 的抓取限制不等于可靠的索引移除。如果维护期曾用 robots.txt 屏蔽该路径,恢复后要确认屏蔽规则已撤下;但即便撤下,已抓取的内容也不会因为规则变化而立即从索引中消失。robots.txt 控制的是“能不能抓”,不是“已抓的怎么处理”。
恢复后常见的残留是快照和摘要仍显示维护文案。需要分清三类信号各自的边界:
如果维护期把该百度推广URL临时改成了 301 跳转到维护页,恢复后必须确认跳转已撤销。301 是持久信号,蜘蛛会按跳转目标更新记录,残留时间可能比 503 更长。这时核对重点是跳转链是否已回到自身,而不是快照文案。
做法一:先清缓存,再核验抓取。成立条件是响应头明确显示边缘缓存命中旧内容,且首屏内容与维护页一致。代价是可能清掉本已正常的缓存,增加一次回源,但不会改变抓取层和索引层。适合“响应层明显不干净”的场景。
做法二:先核验抓取,再决定是否清缓存。成立条件是响应头正常、首屏已是恢复后内容,但快照或摘要仍异常。代价是需要等待蜘蛛重新抓取,期间快照可能继续显示维护文案。适合“缓存层干净、残留集中在百度侧”的场景。
选择依据只有一条:残留信号出现在哪一层,就先处理哪一层。响应层用缓存刷新,抓取层用重新抓取,索引层用等待下一次成功抓取并核对结果。三步顺序颠倒,容易在无效动作上反复消耗时间。
Age,判断边缘节点是否仍吐旧内容。核对完成后,如果响应层干净、最近抓取已成功、快照仍异常,说明只差索引更新周期,继续观察即可;如果最近抓取仍停留在维护窗口内,下一步应推动重新抓取,而不是重复清缓存。把这三层分开判断,才能避免在错误的层上做无效动作。