跳到主要内容

百度和 Google 对 JS 渲染的支持,差得比想象中大

Google 能渲染大部分 JS,百度只渲染一部分,而且不稳定。今年 3 月我们测了 4 种前端架构在两边抓取里的表现,客户端渲染的站在百度上基本等于裸奔。判断方法、改法都写了,看完能判断自己的站有没有问题。

技术SEO 元析智能

Google 能渲染大部分 JS,百度只渲染一部分,而且不稳定。今年 3 月我们测了 4 种前端架构在两边抓取里的表现,客户端渲染的站在百度上基本等于裸奔。

我们测的场景

4 个站,前端架构分别是:纯服务端渲染、Next.js 服务端渲染、Next.js 客户端渲染、Vue SPA。

每个站用百度抓取诊断和 Google 的 URL 检查工具各抓一次,对比抓到的 HTML 里有没有正文和链接。

结果:纯服务端渲染两边都正常;Next.js 服务端渲染两边正常;Next.js 客户端渲染 Google 能拿到正文,百度拿到的 HTML 基本是空的;Vue SPA 两边都只能拿到框架代码,正文和链接都缺。

Google 的渲染

Google 有独立的渲染队列,页面抓下来之后排队渲染,再索引渲染后的内容。这个过程有延迟,但大部分页面最终能渲染出来。

代价是时间。我们观察到新页面从抓取到渲染完成,平均要 3 到 10 天,比纯 HTML 页面慢。

百度的渲染

百度也支持渲染,但覆盖面和稳定性差很多。我们的测试里,Next.js 客户端渲染的站,百度抓到的 HTML 只有标题和 meta,正文和链接都没有。

百度官方文档的说法是要保证"重要内容在 HTML 里可读",实际测试下来,这句话应该理解成"别指望渲染"。

怎么判断你的站有没有问题

三个方法。抓取诊断里看百度拿到的 HTML,搜正文第一句话,搜不到就是没渲染;用 curl 直接请求页面,看返回的 HTML 有没有内容;看索引量,客户端渲染的站索引量通常远低于页面数。

我们一个客户 800 个页面,百度只收录了 60 个,查下来是纯客户端渲染,百度只能看到空壳。

怎么做

优先改服务端渲染或者静态生成,这是根本解法。

改造成本高的话,至少做两件事:关键内容(产品描述、文章正文、内链)放服务端输出;给不渲染的页面加 noscript 兜底内容,虽然效果有限,但比没有强。

我们给那个客户做的方案是:产品页和文章页改成静态生成,交互部分保留客户端渲染。改完两个月,百度收录从 60 页涨到 640 页。

一个被误判的细节

抓取诊断显示百度拿到了 HTML,不代表正文被索引。我们见过客户诊断里返回 200,但百度实际索引的是空白页,因为正文是后来异步加载的。

判断方法:在百度里搜页面的正文片段,搜得到才算真的索引了。抓取诊断只能看抓到时那一刻的内容,不能证明索引结果。

一句判断

前端架构选型的时候没人会想到百度,等收录出问题再改,成本是当初的 10 倍。做国内市场的软件公司,这一点要在技术选型阶段就定下来。

标签:JS渲染抓取百度与Google
元

元析智能

为软件公司做 SEO 和 GEO 优化

Start with a diagnosis

聊聊你的软件产品

不管你现在是 SaaS、开发者工具还是工程设计软件,只要你想让目标客户搜得到你,我们可以聊。第一次沟通不收费,会给你一份当前的 SEO 诊断,你能看出问题在哪。