百度缓存页面保存的是百度蜘蛛抓取那一刻的 HTML 快照。动态页面由脚本或接口在浏览器里二次填充内容,快照里往往只有空壳。要确认百度缓存页面里到底有没有可见内容,直接打开缓存页并禁用 JavaScript,看正文是否仍然存在,是最快的判断方式。
打开百度搜索结果里的“百度快照”,不要只看浏览器渲染后的样子。按下面的顺序观察:
如果源码里搜不到那句独特文字,说明抓取时内容没有出现在 HTML 中,缓存页面对用户和后续索引都缺少可见正文。这一步只是观察,不要急着下结论,因为脚本注入、接口超时、地区差异都可能造成同一现象。
同一个“缓存页没有正文”的现象,至少有三种解释,需要分开验证:
不要看到空白就认定是脚本问题。先确认是“可能原因”还是“已经定位的原因”,再决定改哪里。
时间和人手有限时,按影响面排序,先做能覆盖最多页面的检查:
curl 或抓取诊断工具请求目标 URL,确认返回的 HTML 中是否包含正文文字。这是不执行脚本的原始响应。robots.txt 是否误屏蔽了渲染所需的 JS、CSS 或接口路径。注意,robots.txt 的抓取限制不等于可靠的索引移除,它只影响抓取,不能替代 noindex。如果原始响应里已经有正文,而缓存页没有,问题更可能在抓取时间点或渲染环节;如果原始响应里就没有正文,优先改服务端输出。
确认原因后,处理动作要小而具体。假设某商品详情页的正文由前端接口填充,原始 HTML 只有 <div id="app"></div>,那么可以先把标题、价格、核心描述改为服务端渲染输出,再保留脚本做交互增强。这只是示例,不是真实项目结果。
改完后按以下步骤复查:
复查时注意区分网页搜索、平台推荐和付费广告,缓存页面只反映网页搜索的抓取快照,不代表其他位置的展示效果。不同搜索引擎对脚本渲染的支持情况不同,需要分别核查,不能拿一个引擎的结果推断另一个。
下一步,选一个正文依赖脚本填充的页面,用不执行脚本的请求方式抓一次,看返回的 HTML 里有没有正文。如果没有,就从这一页开始改服务端输出。