很多站点改版之後,頁面在浏览器里看着没問题,但抓取回来的 HTML 里几乎什么都没有:标题在,正文空,連結和图片全靠脚本在浏览器里現拼。對用戶来说体驗可能還行,對搜尋蜘蛛来说,它拿到的就是一只空壳。這篇整理一套渲染方式自查的流程,確認“蜘蛛看到的”和“用戶看到的”是不是同一份内容。
先分清三種常见的渲染方式
- 服務端渲染:請求到達服務器时就把完整 HTML 拼好返回,正文、連結、列表都在源碼里。
- 客戶端渲染:返回一個几乎空的 HTML 加一段脚本,内容由浏览器执行 JS 後再填充。
- 混合渲染:首屏由服務端輸出,後續交互交给前端接管;或者部分区块静態、部分区块异步加载。
三種方式本身没有绝對好坏,問题出在“内容只存在于脚本执行之後”。蜘蛛的渲染资源有限,越依赖 JS、层級越深、外部請求越多,被完整执行的概率就越低。
自查:蜘蛛到底看到了什么
- 用浏览器的“查看網頁源代碼”,而不是“检查元素”。前者是原始响應,後者是渲染後的 DOM,两者经常對不上。
- 在命令行里用 curl 抓取目标地址,把返回内容存成文件再看,正文是否為空一目了然。
- 關閉浏览器 JS 後打開頁面,能讀到多少内容,就是保守估計下的可见量。
- 對照站長平台里的抓取與渲染诊断,看蜘蛛拿到的 HTML 快照和你看到的是否一致。
- 抽查多類模板:列表頁、詳情頁、聚合頁、站内搜尋頁,別只测首頁。
哪些位置最容易出問题
- 正文由接口异步拉取,源碼里只有一個空容器。
- 翻頁和“加载更多”只改狀態不改 URL,蜘蛛没有可跟随的地址。
- 導航和面包屑由 JS 注入,源碼里找不到可爬的連結。
- 图片懒加载用脚本替換 src,源碼里 src 為空或只是占位图。
- 首屏第三方脚本過多,渲染時間被拖長,蜘蛛抓了一半就放弃。
判断标准很简單:把 JS 全關掉,核心内容還在不在。不在,就說明這份内容對蜘蛛来说是不稳定的。
可以怎么處理
不需要整個站点推翻重做,按性價比排序處理即可。
- 把列表頁、詳情頁這類需要被抓的模板改成服務端渲染或预渲染;交互复杂的後台、個人中心可以保持原样。
- 關键導航、面包屑、分頁連結用真實的 a 标簽輸出,不要只挂点击事件。
- 分頁和“加载更多”给出可直達的 URL,让翻頁成為可發現的地址而不是一次性狀態。
- 图片懒加载保留占位的同时,尽量让源碼里存在可讀的 src 與 alt。
- 减少首屏無谓的第三方脚本,给渲染留出時間预算。
排查节奏
渲染方式一旦定下来,後面很难频繁改動,所以建议放在改版或上新模板之前做一次。上线之後每隔一段時間抽查一轮,重点看新栏目、新模板有没有沿用舊寫法。把“關閉 JS 後能否讀到核心内容”当成一條固定驗收項,比事後回头补要省力得多。
渲染自查解决的是“内容能不能被看到”,它不保證被收錄,也不直接决定排名好坏,但它是後續所有優化能不能生效的前提。