最近很多做前端的朋友聊到这个话题,说站点用了客户端渲染,SEO数据就是上不去。我自己项目里也遇到过,今天具体说说。
简单说,就是搜索引擎爬虫看到的内容,和用户实际看到的不一样。
爬虫抓取页面时,它拿到的是一个几乎空的HTML外壳。真正的文章、产品列表这些关键内容,是靠浏览器执行JavaScript后才生成的。但很多爬虫不会等JS执行完,或者只执行一部分。
结果就是,爬虫认为你的页面是空的,或者内容很少。自然就不会给你好的排名。
这跟服务端渲染正好相反。服务端渲染是服务器直接把生成好的完整HTML发给浏览器和爬虫,大家看到的东西一致。
这里有几个马上能用的检查方法:
这是最彻底的方案。让你的Node.js(或其他服务端环境)在响应请求时,提前把Vue/React组件渲染成完整的HTML字符串,再发出去。
如果你的项目用的是Next.js (React) 或 Nuxt.js (Vue),开启SSR相对简单。以Next.js为例,默认的页面组件就是服务端渲染的。你需要检查的是:
getServerSideProps函数里进行?这个函数在每次页面请求时都会在服务端运行。useEffect里用客户端请求获取。如果是自建Vue/React项目,需要配置服务器端渲染框架,比如Vue的@vue/server-renderer或React的react-dom/server。这涉及构建配置和服务器代码改造,工作量较大。
如果你的内容更新不频繁(比如博客、企业官网),SSG是更好的选择。它在构建时就生成好所有页面的HTML文件。
操作步骤:
这样做,爬虫访问任何页面,拿到的都是现成的、完整的HTML,速度极快,SEO效果最好。
这是谷歌官方推荐的折中方案。对普通用户返回客户端渲染的页面,对搜索引擎爬虫返回一个服务端渲染的快照。
具体实施可以靠一些现成服务:
操作上,你需要在你的Web服务器(如Nginx)或应用逻辑里,设置一个“用户代理(User-Agent)检测”环节。当检测到来自Googlebot、Bingbot等已知爬虫的请求时,将请求转发到你的动态渲染服务,然后将渲染好的HTML返回给爬虫。
这是三种方案对资源和效果的影响对比:
| 方案 | 开发复杂度 | 服务器负载 | 页面加载速度 | SEO友好度 |
|---|---|---|---|---|
| 服务端渲染 (SSR) | 高 | 高 (每次请求都渲染) | 快 (首屏) | 优秀 |
| 静态生成 (SSG) | 中 | 低 (仅构建时) | 非常快 | 优秀 |
| 动态渲染 | 中 | 中 (仅对爬虫渲染) | 对用户无影响 | 优秀 |
不管你选哪种方案,改完之后一定要检查这些点:
<title>和<meta name="description">,并且这些标签的内容已经直接存在于服务器返回的HTML中,而不是通过JS修改。<a href=">标准格式。避免使用<div onclick=">这种需要JS交互的“伪链接”,爬虫不会点击它们。<img>标签的alt属性要写清楚,并且随初始HTML一起输出。做完改动,部署上线后,别等着。主动去验证:
说到底,客户端渲染本身不是问题,问题是它让爬虫看不到内容。只要解决了“让爬虫看到完整内容”这个关键点,SEO的障碍就基本扫除了。剩下的就是常规的内容质量和外链建设这些工作了。
本文由小艾于2026-04-28发表在爱普号,如有疑问,请联系我们。
本文链接:https://www.ipbcms.com/20771.html