页面体积和抓取的关系
蜘蛛抓一个页面,不是只看“能不能打开”,还会看“打开要多久、要拉多少字节”。入口页越大,单次抓取消耗的时间和带宽越多:在同样的抓取额度下,能跑的页面就变少;在服务器响应慢的时候,还更容易触发超时,最后只抓到半截 HTML。
所以体积不是“越小越好”的美学问题,而是抓取成本和抓取成功率的权衡。入口页本身没什么正文,主要作用是让蜘蛛顺着链接往下走,那它更没有理由做得很重。
几个可以参考的数量级
不同搜索引擎的阈值不一样,也没有公开的硬性标准,下面只是经验上的参考区间,不是保证:
- 纯 HTML 文档(压缩前的源码)控制在 100KB 以内比较稳妥,超过 200KB 就值得回头看看是不是塞了不该塞的东西。
- 首字节时间(TTFB)尽量控制在几百毫秒内,超过 1~2 秒,蜘蛛的耐心和你自己的用户都会下降。
- 一个页面上的可点击链接,几百个以内比较常见;入口页如果做成上千条链接的“目录墙”,蜘蛛通常也走不完。
这些数字不要当红线背,重点是出现异常时知道往哪个方向查。
入口页被撑大的常见原因
- 内联 CSS 和 JS:模板为了省一个请求,把大段样式和脚本直接写在 HTML 里,结果每个入口页都重复一份。
- base64 图片:小图标内联还行,大图内联会让 HTML 膨胀好几倍。
- DOM 层级太深:几十层嵌套的 div,加上大量隐藏节点,解析成本跟着上升。
- 把正文或列表直接堆在入口页:有些做法为了“看起来有内容”,把大量文本、商品、文章摘要铺满首页,页面自然变大。
- 第三方统计、广告、字体脚本:它们不一定阻塞蜘蛛,但会拖慢渲染并占用带宽。
怎么判断是不是体积出了问题
看抓取日志里的响应字节数、响应时间和状态码,是最直接的。如果同一批入口页里,只有体积大的那部分频繁超时、被抓次数明显偏少,方向就比较清楚了。也可以用外部工具拉一次页面,看压缩传输后的大小、TTFB 和请求数。
别只看“浏览器打开挺快的”,本机缓存和网络条件会掩盖很多问题。
可以做的几件事
- 把 CSS、JS 抽成外部文件,开启 gzip 或 brotli 压缩。
- 入口页只保留导航和必要的摘要,正文内容放到目标页。
- 控制单页链接数量,需要铺开就分页、分层,而不是一张页面全塞。
- 图片走 CDN 并压缩,放弃大图内联。
- 精简模板,去掉没用的注释、空白和废弃组件。
- 改完之后观察一段时间,对比抓取频次和超时比例,而不是改完就认定有效。
两个容易走偏的地方
一是把体积当成唯一指标,为了“轻”把入口页做成只有一行链接的空白页,蜘蛛没有可判断的内容,同样不理想。二是以为压缩率越高越好,压缩只是传输层的事,解析后的 DOM 依然会被处理,结构臃肿的问题还是要在模板层面解决。
入口页的体积管理,说到底是在给蜘蛛省时间,也是在给自己省服务器资源。每次调整只动一两个变量,观察日志再决定下一步,比一次性大改要稳。