有些页面在浏览器里看很正常,标题、正文、参数表都在,但在搜索结果摘要或缓存快照里只剩标题和一段空框架。这种情况容易被误判成“页面没被收录”,于是反复提交、改内链,方向其实偏了。多数时候页面已经进了索引,只是抓取时能读到的内容不完整。
先分清两种现象
第一种:页面压根没进索引,直接搜标题也找不到。第二种:页面在索引里,但保存的版本内容缺失,摘要空洞,或者只剩导航和页脚。这两类问题的处理顺序完全不同,前者优先查发现和抓取,后者优先查渲染。
怎么区分?用站长平台的 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 能解决,渲染问题不解决,提交多少次都一样。
- 把所有异步加载都当成问题,次要模块异步加载是正常做法。
整体思路一句话:先分清现象,再顺着渲染链路往上查,最后只改真正影响内容可读性的那部分。