一文搞懂SSR、SSG、CSR

167 阅读2分钟

先看名称来初步了解:SSR(服务器端渲染)、SSG(静态站点生成)和 CSR(客户端渲染)

CSR(客户端渲染)

(CSR)是一种将网页最初作为空 HTML shell 传递给浏览器的技术。然后,客户端 JavaScript 动态获取数据并在浏览器中呈现页面。

Vue、react 这些 SPA 都是属于 CSR,特点:初始 HTML 几乎为空,由 JS 在浏览器中渲染内容

优点:

  1. 响应速度快​:一旦 HTML 文件加载完成,浏览器就可以开始渲染页面,而不需要等待服务器返回完整的渲染结果。
  2. 动态性强​:由于页面渲染在客户端进行,因此可以方便地实现各种动态交互效果。
  3. 前端部署简单​:只需要一个静态服务即可部署前端代码,降低了部署成本。

缺点:

  1. 首屏加载时间长​:由于需要加载整个 JavaScript 包,可能导致首屏加载时间较长,特别是对于复杂的单页应用(SPA)。
  2. 不利于 SEO​:搜索引擎爬虫可能无法很好地解析由 JavaScript 动态生成的页面内容,导致 SEO 效果较差。
  3. 白屏时间​:在 JavaScript 代码加载和执行期间,用户可能会看到空白的页面,即所谓的“白屏时间”。

SSR(服务器端渲染)

(SSR)是一种在服务器上渲染网页,然后将完全渲染的 HTML 页面发送到客户端浏览器的技术。

Next.js、Nuxt.js 这种都是 SSR,特点:动态生成 HTML(每次请求都生成)

优点:

  • 首屏加载快​(HTML 直接返回)
  • SEO 友好​(搜索引擎可以直接抓取内容)
  • 可动态生成内容(比如根据请求参数或用户登录状态)

缺点:

  • 服务器负载大​(每次请求都要渲染页面)
  • 响应时间受限于网络与服务器性能
  • 实现与部署较复杂(需要运行 Node.js 服务器)

SSG(静态站点生成)

(SSG)是一种在构建时生成网页并用作纯 HTML 文件的技术。

Hugo、Gatsby、hexo 等这些都是 SSG,特点:提前生成好所有 HTML 文件

优点:

  • 性能极好​(CDN 静态文件加载)
  • 可离线部署​,无需服务器逻辑
  • 安全性高​(没有后端执行环境)

缺点:

  • 无法实时更新数据​(需要重新构建)
  • 不适合频繁变化的内容(如社交动态、个性化页面)