入口页能不能被抓、抓多少,很多时候不取决于内容写得怎么样,而取决于蜘蛛在单位时间里能不能把这一页读完。页面体积、DOM 规模、有效文本占比这三件事,直接影响蜘蛛读完一页的成本。本文聊的是观察和调整思路,不涉及任何收录承诺——抓取预算的分配权始终在搜索引擎那边。
先分清三个不同的“大”
很多站长说“我的入口页太大了”,其实说的是三件不同的事:
- 传输体积:服务器返回的 HTML 字节数,压缩前和压缩后差别很大。
- DOM 规模:渲染引擎需要解析出的节点数量,包括标签、属性和文本节点。
- 有效文本占比:去掉导航、页脚、模板文案之后,真正属于本页的正文有多少。
三者不一定同步。一个 200KB 的 HTML 可能只有三百个节点,一个 40KB 的 HTML 也可能因为嵌套过深产生上万个节点。分开看,才知道该动哪里。
HTML 字节数:多少算合理
没有硬性标准,但可以用同类站点的水平做参照。纯列表型入口页,压缩后(gzip 或 brotli)控制在 100KB 以内通常是比较舒服的区间;如果页面本身包含较多结构化数据或大量链接,200KB 上下也不罕见。
真正值得注意的是“膨胀型”页面:
- 把整站导航、推荐位、友情链接全部塞进每个入口页,重复内容占了大半。
- 把 JSON 数据、CSS、JS 直接内联在 HTML 里,几行样式就多出几十 KB。
- 为了凑字数堆砌大量模板化段落,字多但信息密度低。
这类膨胀不但增加抓取成本,还会稀释页面主题,让蜘蛛很难判断这一页到底在讲什么。
DOM 节点数:容易被忽略的瓶颈
不执行脚本的蜘蛛通常只看 HTML 源码,节点数的压力相对小;但执行渲染的蜘蛛会把页面真的跑一遍,DOM 越大,渲染耗时越长。渲染耗时一旦超过抓取超时阈值,蜘蛛可能直接放弃,日志里只留下一条失败记录。
经验上,节点数控制在几千以内比较稳妥。超过一两万,就该检查是不是有这些问题:
- 用多层嵌套的 div 做布局,本可以用更简洁的结构表达。
- 链接列表通过循环生成了大量重复节点。
- 折叠收起区域里的内容仍然占据节点,只是不可见。
有效文本占比:入口页也要“有话说”
入口页的作用是引导发现,但不能是纯粹的空壳。如果整个页面只有几十个链接和一句标题,蜘蛛抓完之后得到的信号非常有限。适当补充与主题相关的说明文字、分类描述、使用场景介绍,有助于让页面具备基本的可理解性。
建议把正文和链接混排,而不是“一堆链接加一段免责声明”。文字不必多,但要是本页特有的,而不是全站复制的模板文案。
资源文件的体积连带效应
CSS 和 JS 不属于 HTML 字节数,但会算进整页的渲染成本。一个入口页挂了五个统计脚本、三个广告位脚本,再加几张大图,渲染时间很容易翻倍。对蜘蛛来说,这些资源的抓取同样占用预算。
处理思路很朴素:能合并的合并,能延后加载的延后,入口页用不到的展示组件就别引。图片做好尺寸压缩,不要拿几 MB 的原图直接当缩略图用。
自查与调整的实操顺序
- 用浏览器开发者工具的网络面板看压缩后的 HTML 实际大小,而不是看编辑器里的字符数。
- 在控制台输出页面元素总数,看节点数量级。
- 把页面源码复制到纯文本编辑器,观察正文占比是否过低。
- 对比日志中同一入口页的抓取耗时,看是否存在持续偏慢的情况。
- 先改结构(去冗余嵌套、拆分模板),再改传输(开启压缩、精简内联),最后才考虑删内容。
几个常见误区
- 越瘦越好:极端精简到只剩链接,反而失去了页面主题信息。
- 只看字节不看结构:压缩后体积很小,但节点数爆炸,渲染照样慢。
- 把体积当成抓取量的决定因素:抓取还受域名历史、链接来源、更新频率等多重影响,体积只是其中一环。
把入口页的体积和结构控制在一个“蜘蛛读得完、读得懂”的水平,比反复调整参数更实际。这件事没有一劳永逸的答案,定期抽查几页就够了。