抓取预算不是無限的
搜尋引擎分配给每個站点的抓取资源有上限,中小站点尤其明顯。同一個目錄下,如果每個頁面都要下载几百 KB 的 HTML,蜘蛛在相同時間里能走完的 URL 數量就會下降。反過来,把頁面瘦下来,你不需要額外提交任何東西,蜘蛛就能在同样的窗口里覆盖更多地址。這不是玄学,只是下载和解析成本的問题。
体积通常在哪些地方悄悄膨胀
- 模板把整站導航、頁脚、侧邊栏複製到每個頁面,DOM 节点動辄几千個;
- 把 CSS、JS 直接内联進 HTML,尤其是整段 UI 框架代碼;
- 图片以 base64 形式寫進 HTML,單張图就能顶几十上百 KB;
- 列表頁一次渲染上百條记錄,或者輸出大量隐藏菜單、彈窗结构;
- 編輯器與建站工具留下的冗余包裹标簽、注释、空容器;
- 结构化資料里塞進整篇正文或大量用不上的字段。
可以照着做的自查步骤
- 從抓取日誌或服務器訪問记錄里,挑 5 到 10 個被频繁抓取的栏目頁與詳情頁;
- 用命令行直接拉取未压缩的 HTML,记錄字节數與节点數量;
- 對比開啟压缩與未压缩两種情况,看真實传輸体积差多少;
- 翻模板的提交记錄,定位体积明顯增長的時間点;
- 估算正文文本占頁面字节的比例,如果只有百分之几,說明大部分内容對蜘蛛没有意义。
按收益排序去處理
先動效果最明顯的部分:把内联的大段脚本和样式改成外鏈或按需加载;把 base64 图片換成獨立文件並配合懒加载;控制列表頁的輸出條數,不要一頁铺满几百條;删掉長期不用的隐藏 DOM。這些做完之後,再考虑压缩空白、合並重复结构這類细活,性價比會低一些,但可以顺手做。
頁面變小不等于内容變少。要削减的是模板噪音,不是正文本身。
短期内改不動怎么办
如果整站模板一时半會儿没法重构,可以先從被抓取最频繁的那几個模板下手。比如首頁、主栏目列表、文章詳情頁這三類,通常占了抓取量的大头。把這三類頁面的体积压下去,整体收益就已经可观。其余的次要模板可以排進後續迭代,不必一次性推倒重来。
和索引表現的關系
体积大不會直接導致不收錄,但它會拉長每個 URL 的處理時間。当蜘蛛在一個大頁面上停留過久,同一天里其他頁面被訪問的机會就少一次。長期下来,常见表現是栏目頁已经更新,詳情頁却迟迟没有抓取记錄。把体积控制在合理范围,是让索引跟上發布节奏的基础工作之一。
按月复盘的几個指标
- HTML 平均体积與最大体积的變化趋势;
- 正文文本字节數占整頁的比例;
- 單個頁面的 DOM 节点總數;
- 抓取統計中每次訪問的平均下载字节數。
這些數字不需要天天盯着,一個月對一次就够。如果發現某次改版之後体积翻倍,先排查是不是新增了组件库或統計脚本,再决定回退還是優化,別让問题一直挂着。