CSR、SSR、SSG 到底有什么区别?

60 阅读3分钟

只要写过前端,尤其是用过 Vue / React / Next / Nuxt,这几个词你一定绕不开:CSR、SSR、SSG
很多文章讲得很抽象,甚至越看越糊涂。其实它们的核心差别只有一句话:

页面是“什么时候”生成的,以及“在哪里”生成的。

下面我们从真实开发场景出发,把这三种渲染方式讲清楚。

一、CSR(Client Side Rendering)——浏览器自己干活

什么是 CSR

CSR 是最传统、也是前端最熟悉的一种方式。

流程很简单:

  1. 浏览器请求页面
  2. 服务端返回一个几乎“空”的 HTML
  3. 浏览器下载 JS
  4. JS 在浏览器里执行,发接口请求数据
  5. 最终把页面“拼”出来

Vue、React 默认都是 CSR。

<body>
  <div id="app"></div>
  <script src="main.js"></script>
</body>

CSR 的特点

优点:

  • 开发体验好,前后端分离清晰
  • 页面切换快(SPA)
  • 非常适合后台系统、管理端

缺点:

  • 首屏慢(要等 JS 下载和执行)
  • SEO 很差(搜索引擎看到的是空壳)
  • 弱网、低端设备体验不友好

适合什么场景

  • 后台管理系统
  • 内部系统
  • 对 SEO 没要求的项目

👉 一句话总结:开发爽,首屏慢,SEO 差


二、SSR(Server Side Rendering)——服务器先把页面算好

什么是 SSR

SSR 的核心变化只有一个:

页面 HTML 在服务器上就已经生成好了。

流程变成:

  1. 浏览器请求页面
  2. 服务端执行 JS,拉数据
  3. 服务端生成完整 HTML
  4. 浏览器直接看到内容
  5. 再进行一次“Hydration”(接管交互)

在 Vue 里是 Nuxt SSR,在 React 里是 Next.js SSR

SSR 的特点

优点:

  • 首屏速度快
  • SEO 非常友好
  • 内容型页面体验好

缺点:

  • 服务器压力大(每个请求都要算)
  • 架构复杂
  • 调试成本高

常见误区

很多人以为用了 SSR 就“性能无敌”,其实不对。

  • SSR 只解决首屏
  • 页面切换还是靠 CSR
  • 接口慢,SSR 也救不了你

适合什么场景

  • 官网
  • 营销页
  • 内容平台(博客、资讯)

👉 一句话总结:首屏快,SEO 好,但服务器要扛得住


三、SSG(Static Site Generation)——提前算好,直接发文件

什么是 SSG

SSG 和 SSR 很像,但时间点不同

SSR 是「请求时生成」,
SSG 是「构建时生成」。

流程是:

  1. 项目 build 时
  2. 拉数据
  3. 生成一堆 .html 文件
  4. 部署到 CDN / 静态服务器
  5. 用户访问时,直接返回 HTML

SSG 的特点

优点:

  • 访问速度极快(接近 CDN)
  • 没有服务器压力
  • SEO 非常好
  • 稳定性极高

缺点:

  • 数据变更不实时
  • 构建时间可能很长
  • 不适合高频变化内容

适合什么场景

  • 博客
  • 文档站
  • 帮助中心
  • 落地页

👉 一句话总结:快、稳、便宜,但不适合动态内容


四、三者放在一起对比

维度CSRSSRSSG
页面生成时间浏览器请求时构建时
首屏速度非常快
SEO非常好
服务器压力几乎没有
架构复杂度
数据实时性实时实时不实时

五、现实项目中,其实是“混合使用”

现在的框架(Next / Nuxt)几乎都在做一件事:

让你在同一个项目里混用 CSR、SSR、SSG。

比如:

  • 首页:SSG
  • 文章详情页:SSR
  • 后台页面:CSR

这才是真正的工程化解法


六、如果你现在不知道选哪个?

给你一个非常实用的判断方法:

  • 后台系统 → CSR
  • 官网 / 营销页 → SSR 或 SSG
  • 博客 / 文档 → SSG
  • 内容 + 实时数据 → SSR + CSR 混合

七、最后一句大实话

CSR、SSR、SSG 没有高低之分,只有“适不适合”。

很多性能问题,根本不是渲染方式的问题,而是:

  • 接口慢
  • 资源大
  • 缓存没做好

选对场景,比盲目追新技术重要得多。