有些頁面在浏览器里看很正常,标题、正文、參數表都在,但在搜尋结果摘要或缓存快照里只剩标题和一段空框架。這種情况容易被誤判成“頁面没被收錄”,于是反复提交、改内鏈,方向其實偏了。多數时候頁面已经進了索引,只是抓取时能讀到的内容不完整。
先分清两種現象
第一種:頁面压根没進索引,直接搜标题也找不到。第二種:頁面在索引里,但儲存的版本内容缺失,摘要空洞,或者只剩導航和頁脚。這两類問题的處理顺序完全不同,前者優先查發現和抓取,後者優先查渲染。
怎么区分?用站長平台的 URL 检查類工具查一下,或者搜頁面标题加一句正文里的獨特表述,看摘要能不能對上。如果摘要里出現的词只来自标题和 meta 描述,正文一句都没带出来,基本可以判断卡在渲染环节。
检查渲染鏈路,按這個顺序看
1. JS、CSS 资源是否被屏蔽
渲染頁面需要先拿到脚本和样式资源。如果 robots.txt 里顺手屏蔽了 js、css 目錄,或者静態资源放在另一個被屏蔽的子域上,渲染就會停在半路。检查一下有没有针對 .js、.css 或静態资源域名的 Disallow 規則。
2. 内容是不是交互後才出現
- 点击“展開更多”才加载的正文
- 切換标簽頁才顯示的規格參數
- 滚動到底部才触發的接口請求
這類设計對用戶没問题,但抓取时不一定有人去点。需要操作才出現的内容,被讀到的概率明顯更低。
3. 接口是否依赖登入態或环境
如果正文来自接口,而這個接口需要登入 Cookie、特定地区 IP,或者依赖浏览器本地狀態,抓取时就可能返回空資料或错誤碼。可以在無登入、無 Cookie 的环境下直接訪問接口地址驗證。
4. 是否存在超时和报错
渲染有時間预算。脚本体积大、串行請求多、第三方統計脚本又慢,正文可能還没渲染出来,抓取就已经結束。查看服務器日誌里這些资源的响應時間和狀態碼,能看出不少問题。
要不要改成服務端直出
不是所有 JS 渲染的内容都必须改。判断标准可以简單一点:這段内容對你重不重要。
- 核心正文、商品參數、價格、常见問答這類决定頁面價值的部分,建议直接寫在 HTML 里,或者做服務端渲染、预渲染,让抓取时就能拿到。
- 评论、推荐位、個性化模块這類次要内容,晚一点加载影响不大。
- 暂时不改架构的话,至少保證首屏 HTML 里有一段和主题强相關的文字,不要全靠脚本填充。
能被稳定讀取的内容,通常就是直接寫在 HTML 里的那一部分。渲染是补充,不是唯一来源。
處理顺序小结
- 先確認是“没收錄”還是“收錄了但内容缺失”,別混在一起查。
- 查 robots.txt 是否挡住了 JS、CSS 和静態资源域名。
- 確認正文是否依赖点击、滚動、登入態等條件才出現。
- 检查接口在無 Cookie、無登入环境下能否正常返回。
- 看渲染耗时是否超出抓取的時間预算。
- 最後再决定哪些模块改直出、哪些保持异步加载。
几個常见誤区
- 以為改一下 meta 描述就能让摘要變完整,其實摘要要有正文可取才有内容。
- 以為多提交几次 sitemap 能解决,渲染問题不解决,提交多少次都一样。
- 把所有异步加载都当成問题,次要模块异步加载是正常做法。
整体思路一句话:先分清現象,再顺着渲染鏈路往上查,最後只改真正影响内容可讀性的那部分。