不少站点在前端改版之后,页面在浏览器里看起来一切正常,但用工具请求一次,返回的 HTML 里只有一行 script 和几个空的 div。对蜘蛛来说,它拿到的就是一副空骨架。渲染方式的问题不会报错,也不影响普通访客,很容易被忽略,直到发现某些栏目迟迟没有动静、快照里的内容停留在很久以前。
先弄清自己属于哪种渲染方式
- 服务端渲染(SSR):服务器返回的 HTML 里就带有完整正文,一次请求即可拿到内容。
- 静态生成(SSG):构建时生成 HTML 文件,效果与 SSR 接近,适合更新频率不高的栏目。
- 客户端渲染(CSR):HTML 只是壳,正文靠浏览器执行 JavaScript 后填充,需要额外渲染步骤。
- 混合渲染:首屏用 SSR,部分模块由 JS 异步拉取,容易出现“看得见但不一定读得到”的边界情况。
自查清单
1. 直接看源码
用命令行工具或浏览器的“查看网页源代码”(不是开发者工具里的 Elements 面板)请求几个代表性地址:首页、栏目页、详情页、分页第二页。挑一句正文里独有的文字在源码中搜索,如果找不到,说明这段内容依赖 JS 渲染。
2. 对比渲染前后的结构
在开发者工具里看渲染后的 DOM,再和源码逐块对照。两者差异越大,越需要评估对方是否能执行到同样的结果,尤其是那些改动之后才出现的差异。
3. 检查关键元素是否在初始 HTML 中
- 标题、正文、面包屑、主要内链是否出现在源码里;
- meta robots、canonical、结构化数据是否依赖 JS 才生成;
- 分页与翻页是否是可点击的 a 标签,而不是只有点击事件;
- 图片的 src 是否为占位图,真实地址要等脚本运行后才替换。
4. 看数据接口是否被挡
如果正文来自异步接口,确认该接口没有被 robots.txt 拦截,也不需要特殊头部或登录态才能返回数据。接口被挡时,页面在浏览器里正常,抓取侧却只能看到空白。
常见的三类坑
- 骨架屏写进 HTML:用户端体验不错,但骨架文字可能被当成正文,导致多个页面内容高度相似。
- 异步注入关键标签:canonical 与标题由脚本写入,执行时机不稳定时容易缺失或写错地址。
- 无限滚动:内容只在滚动后加载,缺少可直接访问的分页入口,靠后的内容很难被发现。
处理顺序建议
- 先给内容型页面做服务端渲染或预渲染,把正文、标题、内链放进初始 HTML;
- 再处理交互型模块,允许它们继续用 JS,但不要承载主要文字内容;
- 无限滚动页面补一套带链接的分页路径,滚动只作为体验增强;
- 改完后用同一批地址复测源码,确认渲染前后一致,再观察一段时间。
提醒:渲染方式只解决“内容能不能被读到”这一环,是否收录、以什么位置展示,还取决于内容质量、站点整体结构与搜索需求,不必把日志里的每一次访问都当成结果指标。
小结
渲染自查不需要一次性大改,关键是把它变成例行动作:每次前端发版后,抽几个代表地址看一眼源码,确认正文、标题、分页链接还在初始 HTML 里。发现问题时,优先修内容页,再修交互模块,改动记录留档,方便下次对比。