抓取预算这个词听起来抽象,落到日常操作上却很具体:蜘蛛一天能来你的站点下载多少内容。如果每个页面都要下载几 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 反而会损失信息。更要避免的做法是:为了瘦身把正文改成脚本异步加载,结果蜘蛛只能读到一副空架子。分页、懒加载的部分要记得保留标准的链接入口,让蜘蛛顺着链接也能走到后面的内容。
体积优化要服务于“让蜘蛛更容易读到内容”,而不是单纯追求数字好看。每次调整后,用抓取工具确认页面仍然能拿到主要正文和链接。
小结
页面体积是一项容易被忽略、却每天都在消耗抓取效率的指标。它不需要复杂的工具,只需要定期测量、找出重复出现的问题模板、逐个清理。把这件小事做扎实,蜘蛛在同样的时间里就能多走几个页面。