抓取预算這個词听起来抽象,落到日常操作上却很具体:蜘蛛一天能来你的站点下载多少内容。如果每個頁面都要下载几 MB 的 HTML、脚本和样式,在同样的時間和带宽下,它能讀完的 URL 數量就會明顯减少。頁面体积不只是前端性能問题,它也會影响蜘蛛對整站的覆盖效率。
為什么 HTML 体积值得單獨看
图片、视频這類资源通常由浏览器按需加载,蜘蛛並不一定全部拉取。但 HTML 文档本身,以及寫在 HTML 里的内联脚本和样式,是蜘蛛必须完整下载的内容。也就是说,一個頁面不管用戶看到多少,蜘蛛都要先把你寫在文档里的全部文本吃下去。頁面越臃肿,單位時間内能處理的 URL 就越少。
先把數字量出来
需要记錄的几項指标
- 單頁 HTML 传輸体积,压缩後和未压缩各记一次
- HTML 中的 DOM 节点數量
- 内联 style 與 script 的字节數
- 從發起請求到下载完成的時間
用命令行工具或浏览器開發者工具的“網絡”面板都能拿到這些數字。建议抽首頁、栏目頁、列表頁、詳情頁各若干個,记錄下来做基线,後續改版时對比才有意义。
体积膨胀的几個常见来源
把資料整份塞進 HTML
不少前端框架會把整份資料以 JSON 形式内联進頁面,用于首屏渲染。資料量大的列表頁、商品頁,经常一屏内容配着几百 KB 的資料。這段文本對蜘蛛没有額外的阅讀價值,却要完整下载一遍。
内联样式與图标
為了减少請求,把大量 CSS 内联進每個頁面,结果每頁都重复一份。图标字体、base64 编碼的小图也是同理,看着省了請求,實际把体积摊到了每一次抓取上。
模板與组件的堆积
隐藏的彈窗、折叠区块、没有用到的组件全部輸出到 HTML 里。用戶看不见,蜘蛛却要全部下载和解析。這類問题通常集中在某几個公共模板上,一旦存在就會扩散到成千上萬個頁面。
第三方脚本
統計、客服、广告、A/B 測試脚本,單個動辄几十上百 KB,加在一起很可观。有些還會同步加载,阻塞後面的内容解析。需要定期盘点,把不再使用的及时清掉。
自查與處理清單
- 選取五到十個典型頁面,记錄 HTML 体积,建立可對比的基线。
- 横向對比同類頁面,找出明顯偏大的模板,優先解决會重复出現的問题。
- 清理 HTML 中對蜘蛛没有意义的隐藏区块、調试輸出和注释。
- 把大段内联 CSS 與 JS 抽成可缓存的外部文件,避免每頁重复下载。
- 检查列表頁是否一次性輸出上千條連結,考虑合理分頁,或提供可抓取的备用入口。
- 把体积指标纳入改版检查項,改完之後复测一次,確認没有反彈。
不要矫枉過正
减少体积的目的是让蜘蛛更快拿到正文和連結,不是越小越好。如果一個頁面本来就需要展示較多内容,硬砍到几十 KB 反而會损失信息。更要避免的做法是:為了瘦身把正文改成脚本异步加载,结果蜘蛛只能讀到一副空架子。分頁、懒加载的部分要记得保留标准的連結入口,让蜘蛛顺着連結也能走到後面的内容。
体积優化要服務于“让蜘蛛更容易讀到内容”,而不是單纯追求數字好看。每次調整後,用抓取工具確認頁面仍然能拿到主要正文和連結。
小结
頁面体积是一項容易被忽略、却每天都在消耗抓取效率的指标。它不需要复杂的工具,只需要定期测量、找出重复出現的問题模板、逐個清理。把這件小事做扎實,蜘蛛在同样的時間里就能多走几個頁面。