在抓取統計里看到图片、CSS、JS 的請求量遠高于 HTML,很多人的第一反應是「抓取预算被抢走了」。方向不算错,但容易把两件事混在一起:资源抓取本身是渲染頁面所必需的,真正需要排查的是资源請求有没有在拖慢 HTML 的抓取节奏。
先分清两類開销
一類是配額层面的開销。搜尋引擎在抓取統計里通常會按资源類型或抓取用途区分條目,图片、脚本、样式的抓取量與 HTML 並不共用同一個口径,單看總量容易得出错誤结论。
另一類是時間和並發层面的開销,這一层才是實际問题所在。当服務器连接數、带宽被大量小文件占满,HTML 响應會變慢,蜘蛛等待時間變長,同样的抓取窗口内能取回的頁面數量就會减少。表現上像是「预算變小」,本质是响應變慢。
建议的排查顺序
- 先看抓取統計中按用途或资源類型的分布,確認 HTML 與资源的抓取比例是否長期失衡,而不是只看某一天。
- 检查同一張图是否存在多個版本:尺寸後缀、裁剪參數、水印參數是否各生成一套 URL。
- 检查图片是否直接以原始大图輸出,列表頁首屏是否一次性加载几十張大图。
- 检查静態资源域名是否與主站共用同一台服務器或同一個连接池。
- 對比 HTML 平均响應時間與静態资源平均响應時間,看谁在拖後腿。
- 检查是否有被 robots 拦截、却仍被大量頁面引用的资源,這類請求往往反复失敗。
容易踩的坑
- 缩略图與原始图並存,同一图片派生几十種尺寸變体。
- 资源 URL 带随机參數或時間戳,缓存每次都失效,每次都要回源。
- 列表頁一次輸出上百張图,首屏 HTML 体积被撑大,解析時間變長。
- CDN 命中率偏低,静態资源大量回源,源站压力被動上升。
- 废弃模板、舊组件仍在被引用,产生大量低频但持續的請求。
服務器侧该看什么
重点不是總請求數,而是並發连接占用、5xx 與超时比例、静態资源的平均耗时。如果资源請求把连接池長期打满,蜘蛛抓 HTML 时也會排在同一队列後面,抓取間隔自然被拉長。
判断标准很简單:资源抓取让 HTML 變慢了吗?有没有制造大量重复 URL?如果两個答案都是否,就不必急着做资源屏蔽。
處理建议
- 图片按實际展示尺寸輸出,用 srcset 提供有限档位,而不是所有尺寸全量生成。
- 统一资源 URL,去掉無意义的随机參數,让缓存真正生效。
- 静態资源獨立域名或獨立服務,與動態 HTML 請求分流,避免互相排队。
- 配置長缓存並使用带 hash 的文件名,减少回源次數。
- 精简首屏關键资源,把非首屏图片交给懒加载,但注意保證正文連結仍可被抓取。
- 定期清理模板中的废弃引用,减少低频無效請求。
资源抓取不是敌人,它是頁面可被完整理解的前提。需要盯住的是它有没有間接抬高 HTML 的响應成本,以及有没有在日誌里制造出成片的重复入口。把這两点核對清楚,再决定是否調整资源策略,比直接屏蔽资源要稳妥得多。