很多时候,收錄問题不在内容本身,而在蜘蛛每次来的时候都没拿到一份正常的响應。抓取是收錄的前置步骤,這一步反复失敗,後面的索引评估根本不會發生。服務器狀態碼和响應速度,是决定這一步顺不顺利的直接因素。
蜘蛛看到的服務器错誤,和你想的不一样
用戶可能看到一片空白或一個自定义错誤頁,但蜘蛛只看 HTTP 狀態碼。你返回什么碼,它就按什么逻辑處理。所以「頁面上寫着系統繁忙請稍後」這種软處理,和真正返回 503,對蜘蛛来说完全是两回事。
5xx:明确的服務器故障
500、502、504 這類响應表示服務器端出了問题。蜘蛛遇到 5xx 的常见做法是稍後重试,並在一段時間内降低對该站点的抓取速度。偶尔出現影响不大,但如果某個目錄長期大量返回 5xx,這段路径的抓取频率會被明顯压低,新 URL 的發現和已有 URL 的复查都會往後排。
503:维護可以,但別長期挂着
503 通常配合 Retry-After 表示临时不可用,适合短時間维護。如果這個狀態持續很久,蜘蛛會把它当成長期不可用来處理,抓取安排随之調整。维護結束後记得及时恢复,別让 503 變成一個常驻狀態。
429 與限流:蜘蛛也會被挡
返回 429 或直接拒绝连接,通常是服務器認為請求過多。蜘蛛會據此放慢速度,也可能干脆减少来訪。更常见的問题是 CDN、WAF 或安全插件誤判蜘蛛 IP,把正常抓取当成攻击拦掉,结果日誌里全是 403,而你在後台看不出明顯異常。
超时與慢响應
蜘蛛對响應時間有阈值,太慢的頁面會被放弃抓取。資料库查询慢、頁面依赖大量同步外部請求、首字节時間過長,都會让抓取效率被摊薄。抓取预算是有限的,慢頁面占用的時間越多,能抓到的 URL 就越少。
抓取失敗會不會直接掉索引
一般不會立刻。已收錄頁面短期抓取失敗,通常先保留在索引里,蜘蛛之後再来看。但如果失敗持續很久,索引中保留的版本會越来越舊,頁面能否繼續留在索引里也變得不确定。更常见的表現是新 URL 一直停在「已發現、尚未抓取」,收錄速度明顯變慢。這些结果往往由多個因素共同决定,抓取只是其中一环。
可以先從日誌里看這几項
- 狀態碼分布:5xx、403、429 各占多少,集中在哪些目錄或參數
- 响應時間:蜘蛛請求的耗时和真實用戶是否一致,有没有被單獨限速
- 重试情况:同一 URL 是否被反复請求又反复失敗
- 频率變化:某段時間之後蜘蛛整体来訪次數是否下降
處理时的几個原則
- 先修服務器错誤,再谈内容優化。抓都抓不稳,改内容的意义有限。
- 维護时用 503 加 Retry-After,不要用 200 返回一個寫着维護中的頁面。
- 检查 CDN 與安全策略,確認搜尋蜘蛛没被誤拦,必要时放行官方 IP 段。
- 優先保證首字节時間,把非必要的同步外部請求移出關键路径。
- 不要靠調高抓取频率設定来催收錄,服務器扛不住时结果只會更糟。
抓取失敗不直接决定收錄结果,但它决定了蜘蛛還有没有机會做後面的评估。让每次来訪都能拿到一份正常的响應,是最基础也最容易被忽略的一环。