为什么渲染策略很重要?
四大渲染策略一览
CSR
客户端渲染
所有渲染工作在浏览器端完成。服务器只返回一个空的 HTML 框架和 JavaScript Bundle,由浏览器下载、解析并执行 JS 后生成完整的 DOM。...
SSR
服务端渲染
每次用户请求时,服务器在 Node.js 环境中实时执行 React 组件、获取数据、生成完整 HTML 字符串返回给浏览器,随后浏览器执行 Hydration...
SSG
静态站点生成
在 构建时 (Build Time) 预渲染所有页面为纯静态 HTML 文件。部署到 CDN 后,用户请求直接获取预生成的 HTML,无需任何服务端计算。...
ISR
增量静态再生
SSG 的进化版本。在静态生成的基础上,通过设置 `revalidate` 时间窗口,让页面在指定秒数后**自动在后台重新生成**。兼具静态站点的速度和动态内容...
深度解析
Client-Side Rendering
CSR
客户端渲染
所有渲染工作在浏览器端完成。服务器只返回一个空的 HTML 框架和 JavaScript Bundle,由浏览器下载、解析并执行 JS 后生成完整的 DOM。
适合对 SEO 要求不高、交互极其复杂的管理后台 / SPA 应用
优势
- 前后端彻底分离
- 交互响应极快(后续导航)
- 服务器压力极小
- 部署简单(静态托管即可)
劣势
- 首屏白屏时间长
- SEO 极差
- JS 未加载完页面不可用
- 低端设备性能开销大
Server-Side Rendering
SSR
服务端渲染
每次用户请求时,服务器在 Node.js 环境中实时执行 React 组件、获取数据、生成完整 HTML 字符串返回给浏览器,随后浏览器执行 Hydration 使其可交互。
适合需要强 SEO + 内容频繁变化的页面,如电商商品详情、新闻文章
优势
- SEO 非常友好
- 首屏渲染极快
- 动态数据实时反映
- 社交分享有完整预览
劣势
- 每次请求都要计算,服务器压力大
- TTFB 受服务器性能影响
- 需要 Node.js 服务器环境
- Hydration 阶段仍需加载 JS
Static Site Generation
SSG
静态站点生成
在 构建时 (Build Time) 预渲染所有页面为纯静态 HTML 文件。部署到 CDN 后,用户请求直接获取预生成的 HTML,无需任何服务端计算。
适合内容不经常变动的页面,如博客、文档站、营销着陆页
优势
- 访问速度极快(CDN 边缘节点)
- SEO 完美
- 服务器零压力
- 安全性高(无服务器代码)
- 可离线访问
劣势
- 构建时间随页面数增长
- 内容更新需重新构建部署
- 不适合高度动态内容
- 大量页面时构建极慢
Incremental Static Regeneration
ISR
增量静态再生
SSG 的进化版本。在静态生成的基础上,通过设置 `revalidate` 时间窗口,让页面在指定秒数后**自动在后台重新生成**。兼具静态站点的速度和动态内容的新鲜度。
适合内容会变化但实时性要求不极端的场景,如电商首页、排行榜、新闻列表
优势
- 兼具 SSG 速度和动态数据
- 无需全量重新构建
- 后台更新对用户透明
- 按需再生,资源高效利用
劣势
- 首次再生时可能展示旧数据
- 需要 Node.js 运行时
- 再生期间有短暂时差
- 逻辑理解相对复杂
全维度对比矩阵
| 评估维度 | CSR客户端渲染 | SSR服务端渲染 | SSG静态站点生成 | ISR增量静态再生 |
|---|---|---|---|---|
| 首屏速度 | 慢 | 快 | 极快 | 极快 |
| SEO 友好度 | 差 | 好 | 极好 | 极好 |
| 数据实时性 | 实时 | 实时 | 构建时 | 近实时 |
| 服务器压力 | 无 | 大 | 无 | 小 |
| 构建速度 | 快 | — | 慢 | 渐进 |
| 缓存能力 | 浏览器 | 较难 | CDN | CDN+ |
| 交互复杂度 | 极好 | 好 | 好 | 好 |
| 适用规模 | 中小型 | 中型 | 大型 | 大型 |
如何选择?决策指南
你的页面需要被搜索引擎收录吗?
如管理后台、内部工具,SEO 不重要,追求极致交互体验
数据变化频率有多高?
关键洞察
一句话速记
浏览器干活
服务器实时算
提前做好放 CDN
先用缓存 后台更新