蜘蛛抓取的調度不是一成不變的,它更像一條會随站点狀態伸缩的水管:站点响應快、错誤少,管道就宽一点;响應時間開始忽快忽慢,管道就會被收窄。很多站点把抓取量下降归因于“内容不够新”或“權重不够”,但實际排查下来,問题往往出在服務器响應時間上。
蜘蛛感知到的“慢”,和用戶感知的不完全一样
用戶看的是頁面什么时候能看见内容,蜘蛛看的是更靠前的几個节点:
- 连接建立時間:DNS 解析、TCP 握手、TLS 握手是否稳定,偶發失敗會直接算作一次抓取失敗。
- 首字节時間(TTFB):服務器多久開始返回响應,這一項直接决定蜘蛛要不要繼續等下去。
- 整体下载時間:HTML 传輸是否中途卡住、连接是否被提前關閉。
- 狀態碼是否干净:200 是否稳定返回,還是夹杂 5xx、超时、连接重置。
這些指标里,任何一項出現时好时坏,都會让蜘蛛對整站的抓取意愿打折扣。稳定但略慢,通常比忽快忽慢更好。
响應時間波動之後,抓取队列會發生什么
当站点開始出現間歇性慢响應,蜘蛛端常见的變化是:
- 同一時間的抓取连接數下降,單次抓取占用時間變長。
- 單位時間内能走完的 URL 數量减少,抓取队列被拉長。
- 非核心 URL 被推迟,深层次頁面、分頁、归档頁最先被放到一邊。
- 如果慢响應伴随 5xx,蜘蛛會降低訪問频率,恢复需要一段時間。
也就是说,你看到的是“最近抓得少了”,蜘蛛那邊發生的是“每次訪問成本變高了”,這是两件事。
哪几類波動最容易被放大
- 集中出現的 5xx:資料库连接打满、缓存穿透、發布时的短暂不可用,都會让蜘蛛把整站标记為不稳定。
- 超时而非报错:连接一直挂着不返回,比直接返回错誤更消耗蜘蛛的等待预算。
- 動態頁慢、静態頁快:站内搜尋、篩選、排序這類參數頁最容易拖慢平均响應,而它們往往又是自動生成、數量庞大的一批 URL。
- 高峰时段慢:如果慢响應集中在某几個時間段,多半是资源竞争,而不是代碼本身的問题。
一份可以照着做的自查顺序
- 先看狀態碼分布:把 5xx、超时、连接重置的比例單獨拉出来,看是不是集中在某類 URL 上。
- 再看响應時間曲线:平均值往往掩盖問题,重点看 P95、P99 這類尾部數值。
- 区分動態與静態:把參數頁、搜尋頁的响應單獨統計,別和文章頁混在一起。
- 检查缓存命中:静態资源、列表頁、詳情頁的缓存策略是否一致。
- 查看發布窗口:上线、清缓存、重建索引的時間段,是否正好和抓取失敗高峰重合。
- 確認 robots.txt 與 Sitemap 可正常訪問:這两個文件本身如果响應慢,會连带影响整站的抓取判断。
抓取量下降时,先別急着加内容,先確認蜘蛛每次来訪是不是都能顺利拿到一個干净的 200。
稳定性恢复之後,別忘把 URL 發現补回来
响應恢复正常,並不意味着抓取量會立刻回到原来的水平。蜘蛛重新提高訪問频率需要一個過程,這段時間里,站内可以做几件事:
- 用内鏈把重要頁面重新抬到点击距离較近的位置,尤其是之前被推迟的深层次頁面。
- 確認 Sitemap 里的 URL 都能返回 200,不要混入重定向地址或已经失效的地址。
- 新發布的頁面,尽量從已有且抓取稳定的頁面鏈過去,而不是只挂在 Sitemap 里等着。
- 观察一段時間的抓取分布,確認恢复是全面的,而不是只回到首頁和列表頁。
服務器稳定性是抓取的基础條件,它不像内容更新那样有立竿见影的反馈,但一旦出現波動,影响會体現在整站的抓取分布上。把响應時間、狀態碼、超时比例当成長期观测指标,比事後补救要省力得多。抓取能否增加、頁面能否被收錄,最终仍取决于搜尋引擎的判断,站点能做的,是把這些基础項保持在可预期的狀態。