入口頁能不能被抓、抓多少,很多时候不取决于内容寫得怎么样,而取决于蜘蛛在單位時間里能不能把這一頁讀完。頁面体积、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 實际大小,而不是看編輯器里的字符數。
- 在控制台輸出頁面元素總數,看节点數量級。
- 把頁面源碼複製到纯文本編輯器,观察正文占比是否過低。
- 對比日誌中同一入口頁的抓取耗时,看是否存在持續偏慢的情况。
- 先改结构(去冗余嵌套、拆分模板),再改传輸(開啟压缩、精简内联),最後才考虑删内容。
几個常见誤区
- 越瘦越好:极端精简到只剩連結,反而失去了頁面主题信息。
- 只看字节不看结构:压缩後体积很小,但节点數爆炸,渲染照样慢。
- 把体积当成抓取量的决定因素:抓取還受域名歷史、連結来源、更新频率等多重影响,体积只是其中一环。
把入口頁的体积和结构控制在一個“蜘蛛讀得完、讀得懂”的水平,比反复調整參數更實际。這件事没有一劳永逸的答案,定期抽查几頁就够了。