讨论抓取时,注意力通常放在 HTML、狀態碼、内鏈结构和 Sitemap 上。但蜘蛛在真正拿到頁面内容之前,還有一段不常被提起的路要走:找到服務器、建立连接、完成握手、等待後端返回第一個字节。這几步如果慢或者不稳定,抓取节奏會從源头被限制,後面再優化頁面的意义也會打折扣。
DNS 解析:第一個可能卡住的地方
蜘蛛拿到一個 URL 後,第一件事是把域名解析成 IP 地址。如果權威 DNS 响應慢、偶尔超时,或者返回结果在不同解析器之間差异很大,蜘蛛在發出 HTTP 請求之前就已经耗掉了一部分時間和重试机會。
- 解析服務要可靠:避免單点,選擇响應稳定的 DNS 服務商。
- 减少 CNAME 层級:多級 CNAME 會拉長解析路径,每一跳都是額外等待。
- 检查解析一致性:不同地区、不同递归解析器拿到的结果是否一致。
- 谨慎做频繁切換:解析结果在多個 IP 之間大幅来回變動,容易让连接落在狀態不一致的节点上。
TLS 握手與连接复用
現在绝大多數站点走 HTTPS,每個新连接都要完成 TLS 握手。握手轮次越多,蜘蛛在拿到資料前等的時間越長。支持 HTTP/2 或 HTTP/3、啟用會话复用,可以让蜘蛛重复訪問同一站点时省掉一部分握手成本。
還要留意两類容易被忽略的問题:證书鏈不完整、證书临近過期,或者只支持過舊的协议套件。這些情况在浏览器里不一定看得出来,因為浏览器可能已经缓存了會话,而蜘蛛每次都是相對干净的新连接。
首字节時間:後端處理决定等多久
TTFB 指從發出請求到收到第一個字节的時間,它把服務器排队、應用處理、資料库查询、缓存命中的结果都算了進去。TTFB 長期偏高,意味着蜘蛛每一次抓取都要等更久,單位時間内能走的頁面數量自然下降。
- 確認静態頁面和列表頁能否走 CDN 或反向代理缓存。
- 排查慢查询、同步的外部接口調用、串行执行的後端請求。
- 關注负载上升时 TTFB 是否明顯恶化,而不是只看平峰时段的表現。
稳定性比峰值速度更重要
很多时候問题不在平均响應時間,而在波動。蜘蛛遇到間歇性的超时、5xx、连接被重置,它會主動放慢抓取频率,即使之後服務器负载已经降下来,恢复也需要時間。
抓取是一個持續的過程,蜘蛛记住的是整体体驗,而不是某一次特別快的响應。
一個可执行的排查顺序
- 先看 DNS:解析耗时、解析结果一致性、CNAME 层級。
- 再看连接:TLS 握手耗时、證书有效性、协议版本支持情况。
- 然後看 TTFB:按时段和頁面類型分開統計,不要只看平均值。
- 接着看错誤率:超时、5xx、连接被拒出現的频率與分布。
- 最後對照服務器日誌和抓取工具的資料,確認瓶颈落在哪一段。
這些环节都發生在内容返回之前,却决定了蜘蛛愿不愿意、能不能稳定地把抓取繼續下去。把连接阶段的稳定性做扎實,往往比事後反复調整抓取相關參數更直接有效。