你了解 SSR、CSR、SSG 和 ISR 的区别吗?
介绍了服务端渲染 (SSR)、客户端渲染 (CSR)、静态站点生成 (SSG) 和增量静态再生 (ISR) 的概念及其区别。
SSR (Server-Side Rendering, 服务端渲染)、CSR (Client-Side Rendering, 客户端渲染)、SSG (Static Site Generation, 静态站点生成) 和 ISR (Incremental Static Regeneration, 增量静态再生) 是现代前端开发的四种主要渲染策略,核心区别在于内容生成时机、方式及适用场景:
1. SSR (服务端渲染)
- 定义:每次用户请求时,服务器动态生成完整 HTML 页面返回给客户端。
- 特点:
- 首屏加载快:浏览器直接渲染预先生成的 HTML。
- 对 SEO 友好:搜索引擎能直接抓取完整内容。
- 缺点:服务器压力大,每次请求都需实时渲染;交互性较差,需通过水合(hydration)激活交互逻辑。
- 适用场景:电商平台、新闻网站等要求 SEO 和高首屏性能的动态内容站点。
2. CSR (客户端渲染)
- 定义:服务器仅返回基础 HTML 结构和 JavaScript 脚本,由浏览器执行 JS 动态生成页面内容。
- 特点:
- 强交互性:适合复杂单页应用(SPA),可局部更新视图。
- FP(First Paint)速度快:初始加载简单 HTML。
- 缺点:首屏白屏时间长(需等待 JS 加载和执行);SEO 不友好,内容依赖 JS 执行。
- 适用场景:后台管理系统、实时协作工具等交互密集型应用。
3. SSG (静态站点生成)
- 定义:在构建时预渲染所有页面为静态 HTML 文件,用户请求时直接返回。
- 特点:
- 极高性能:CDN 可缓存静态文件,访问速度快。
- 高安全性:无服务器端动态逻辑。
- 缺点:不适用频繁更新的动态内容;需重新构建更新。
- 适用场景:博客、文档网站、营销页等内容稳定的站点。
4. ISR (增量静态再生)
- 定义:扩展 SSG,允许在后台异步更新部分静态页面(定时刷新或在用户请求时触发更新)。
- 特点:
- 平衡性能与实时性:保留 SSG 高性能的同时支持增量内容更新。
- 缺点:更新可能有延迟;需配置缓存策略。
- 适用场景:电商商品页、新闻列表页等半动态内容。
关键对比
维度 | SSR | CSR | SSG | ISR |
---|---|---|---|---|
内容生成时机 | 服务端按请求动态生成 | 客户端执行 JS 生成 | 构建时预生成 | 初版预构建 + 后台增量更新 |
性能优势 | 首屏快 | 后续交互快 | 首次加载极快 | 首屏快且更新灵活 |
SEO 支持 | ★★★ | ★☆☆ | ★★★ | ★★★ |
动态内容能力 | 支持实时数据 | 高效处理动态交互 | 依赖构建更新 | 支持按需增量更新 |
<!-- CSR 示例: 基础 HTML 依赖 JS 生成内容 -->
<!DOCTYPE html>
<html>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
<!-- SSG 示例: 构建时生成的静态页面 -->
<!-- 部署后直接访问生成的 index.html -->
场景选择建议
- 需要丰富交互 → CSR(如 SPA 应用)。
- 追求 SEO 和高首屏速度 → SSR(如博客、电商)。
- 内容基本固定 → SSG(如文档站)。
- 要求高性能但需部分动态更新 → ISR(如商品页)。