搜索抓取

站点换了一批 URL 之后:蜘蛛的抓取队列会怎么重排

站点改版或更换 URL 之后,蜘蛛不会立刻把抓取转到新地址。本文梳理旧 URL 的不同响应会如何影响抓取队列的重排过程,新地址的发现速度取决于哪些线索,内链、Sitemap 与 301 在过渡期该怎么配合,并给出用日志验证效果的观察指标。

搜索抓取

站点换了一批 URL 之后:蜘蛛的抓取队列会怎么重排

改版、换域名、调整目录结构,都会让站点在蜘蛛眼里变成“半新半旧”。旧地址还在,新地址刚出现,抓取队列需要用一段时间重新排序。这段时间的表现往往不是抓取量暴跌,而是抓取被摊到两批地址上,真正被重新认识的页面变少。

蜘蛛先看到什么,再决定抓什么

蜘蛛不会“知道”你改版了。它只会按已有记录访问旧地址,再根据响应结果更新认知:

  • 旧地址返回 301:蜘蛛记下新地址,后续逐步把抓取转过去。这是最顺的一条路。
  • 旧地址返回 404 或 410:蜘蛛放弃旧地址,但如果没有别的线索指向新地址,它只能从首页和 Sitemap 重新爬一遍。
  • 旧地址被 robots.txt 屏蔽:连 301 都读不到,跳转关系等于断掉,新地址的发现会被拖慢。
  • 旧地址仍返回 200 的旧内容:两套内容并存,两边都抓,抓取预算被摊薄。

过渡期第一件要做的事,是让旧地址给出明确信号,而不是让它静默消失。

新 URL 的发现速度取决于线索密度

新地址被发现的快慢,主要看有多少条独立线索指向它。线索越集中、层级越浅,队列重排得越快。

  1. 内链:导航、面包屑、列表页是最稳定的入口,改版上线时同步替换,别指望后期再补。
  2. Sitemap:一次性换成新的 URL 集合,lastmod 反映真实修改时间。旧 Sitemap 如果还留着,会继续把蜘蛛引向旧地址。
  3. 旧页跳转:301 本身是一条线索,前提是蜘蛛还能抓到旧页。
  4. 外链:站外链接更新最慢,这部分只能等,反复提交意义不大。

抓取预算的短期再分配

改版后的一段时间里,抓取量通常被三类地址分走:旧地址(去确认跳转)、新地址(去建立索引),以及改版过程中临时生成的地址。第三类最容易被忽略。上线期间如果冒出带跟踪参数、带会话 ID 的链接,它们会顺理成章地进入抓取队列。

比较稳妥的做法是:上线前清掉临时入口,改版期间减少小范围改动的反复提交,让抓取集中在真正需要被重新认识的页面上。

让过渡期短一些的几件事

  • 301 保留到日志里旧 URL 的访问量明显下降之后再考虑收尾,别急着下掉。
  • 不要在 robots.txt 里屏蔽待迁移的旧目录,那等于把跳转线索一并封死。
  • Sitemap 一次性替换,不要新旧混放。
  • 内链、导航、面包屑同步更新,避免“新页没人指向、旧页一堆入口”的倒挂。
  • 分页、筛选这类容易产生大量地址的模块,改版后确认参数规则没有失控。
判断改版是否顺利,不看蜘蛛当天来了多少次,而看旧地址的抓取占比是否在下降、新地址的抓取占比是否在上升。

用日志做一次对照

改版上线后的一到两周,把日志按地址分组看三件事:

  1. 返回 301 的旧地址是否稳定,404 有没有异常增长。
  2. 新地址的首次抓取是否集中在少数几个入口,如果是,说明其他线索还没被发现。
  3. 抓取总量里有多少落在参数页、搜索结果页这类不需要抓的地址上。

这三项比主观判断直接得多。如果新地址的抓取长期集中在首页一跳,说明内链和 Sitemap 的线索还不够密;如果旧地址迟迟不降,就回头检查还有哪些地方在链接旧地址。

改版本质上是让蜘蛛重新学一遍站点的结构。学习需要时间,能做的就是别给它添乱:旧地址给明确跳转,新地址给稳定入口,剩下的交给抓取节奏自己收敛。