網站收錄

正文靠 JS 渲染:收錄结果里内容缺失的排查顺序

頁面在浏览器里看着正常,搜尋结果的摘要或快照却只剩标题和空框架。這類情况多半不是没收錄,而是渲染环节出了問题。本文按先確認現象、再顺着渲染鏈路排查、最後决定哪些内容改直出的顺序,给出一套可执行的检查方法。

網站收錄

正文靠 JS 渲染:收錄结果里内容缺失的排查顺序

有些頁面在浏览器里看很正常,标题、正文、參數表都在,但在搜尋结果摘要或缓存快照里只剩标题和一段空框架。這種情况容易被誤判成“頁面没被收錄”,于是反复提交、改内鏈,方向其實偏了。多數时候頁面已经進了索引,只是抓取时能讀到的内容不完整。

先分清两種現象

第一種:頁面压根没進索引,直接搜标题也找不到。第二種:頁面在索引里,但儲存的版本内容缺失,摘要空洞,或者只剩導航和頁脚。這两類問题的處理顺序完全不同,前者優先查發現和抓取,後者優先查渲染。

怎么区分?用站長平台的 URL 检查類工具查一下,或者搜頁面标题加一句正文里的獨特表述,看摘要能不能對上。如果摘要里出現的词只来自标题和 meta 描述,正文一句都没带出来,基本可以判断卡在渲染环节。

检查渲染鏈路,按這個顺序看

1. JS、CSS 资源是否被屏蔽

渲染頁面需要先拿到脚本和样式资源。如果 robots.txt 里顺手屏蔽了 js、css 目錄,或者静態资源放在另一個被屏蔽的子域上,渲染就會停在半路。检查一下有没有针對 .js、.css 或静態资源域名的 Disallow 規則。

2. 内容是不是交互後才出現

  • 点击“展開更多”才加载的正文
  • 切換标簽頁才顯示的規格參數
  • 滚動到底部才触發的接口請求

這類设計對用戶没問题,但抓取时不一定有人去点。需要操作才出現的内容,被讀到的概率明顯更低。

3. 接口是否依赖登入態或环境

如果正文来自接口,而這個接口需要登入 Cookie、特定地区 IP,或者依赖浏览器本地狀態,抓取时就可能返回空資料或错誤碼。可以在無登入、無 Cookie 的环境下直接訪問接口地址驗證。

4. 是否存在超时和报错

渲染有時間预算。脚本体积大、串行請求多、第三方統計脚本又慢,正文可能還没渲染出来,抓取就已经結束。查看服務器日誌里這些资源的响應時間和狀態碼,能看出不少問题。

要不要改成服務端直出

不是所有 JS 渲染的内容都必须改。判断标准可以简單一点:這段内容對你重不重要。

  1. 核心正文、商品參數、價格、常见問答這類决定頁面價值的部分,建议直接寫在 HTML 里,或者做服務端渲染、预渲染,让抓取时就能拿到。
  2. 评论、推荐位、個性化模块這類次要内容,晚一点加载影响不大。
  3. 暂时不改架构的话,至少保證首屏 HTML 里有一段和主题强相關的文字,不要全靠脚本填充。
能被稳定讀取的内容,通常就是直接寫在 HTML 里的那一部分。渲染是补充,不是唯一来源。

處理顺序小结

  1. 先確認是“没收錄”還是“收錄了但内容缺失”,別混在一起查。
  2. 查 robots.txt 是否挡住了 JS、CSS 和静態资源域名。
  3. 確認正文是否依赖点击、滚動、登入態等條件才出現。
  4. 检查接口在無 Cookie、無登入环境下能否正常返回。
  5. 看渲染耗时是否超出抓取的時間预算。
  6. 最後再决定哪些模块改直出、哪些保持异步加载。

几個常见誤区

  • 以為改一下 meta 描述就能让摘要變完整,其實摘要要有正文可取才有内容。
  • 以為多提交几次 sitemap 能解决,渲染問题不解决,提交多少次都一样。
  • 把所有异步加载都当成問题,次要模块异步加载是正常做法。

整体思路一句话:先分清現象,再顺着渲染鏈路往上查,最後只改真正影响内容可讀性的那部分。