news 2026/4/8 22:57:00

前端页面渲染方式:CSR、SSR、SSG

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端页面渲染方式:CSR、SSR、SSG

前端页面渲染方式的核心对比:CSR、SSR、SSG(2025-2026 视角)

现代前端(尤其是 React/Next.js、Vue/Nuxt、Angular 等框架)最常用的三种渲染策略如下表所示,已经成为选择技术栈时必须明确回答的问题。

渲染方式全称HTML 内容生成时机数据获取时机首次加载速度(TTFB → FCP)SEO 友好度服务器压力交互响应速度(hydration 后)典型适用场景代表框架/实现方式(2025主流)
CSRClient-Side Rendering浏览器端(下载 JS 后)浏览器端(useEffect/fetch)较慢(白屏时间长)★☆☆☆☆很低优秀(后续交互快)后台管理系统、管理面板、强交互 SPACreate React App、Vite + React/Vue、纯 SPA
SSRServer-Side Rendering每次请求时服务器动态生成服务器端(getServerSideProps)较快(有内容 HTML)★★★★★中等(需 hydration)需要 SEO + 个性化内容(如电商详情、新闻)Next.js getServerSideProps、Nuxt SSR 模式
SSGStatic Site Generation构建时(build/deploy 时)一次性生成构建时(getStaticProps)最快(CDN 直出静态文件)★★★★★极低中等(需 hydration)博客、文档、营销页、内容相对静态的站点Next.js getStaticProps、Gatsby、Astro、Nuxt generate

一、最直观的流程对比图(文字版)

  1. CSR(客户端渲染)
    用户请求 → 返回几乎空的 HTML + 一大堆 JS → 浏览器下载 JS → 执行 JS → fetch API → 渲染页面
    结果:首屏白屏时间长,SEO 差,但后续页面跳转丝滑

  2. SSR(服务端渲染)
    用户请求 → 服务器 fetch 数据 → 渲染完整 HTML → 返回给浏览器 → 浏览器显示内容 + 下载 JS → “激活”(hydration)成可交互页面
    结果:首屏快、有内容,SEO 好,但每个请求都要服务器计算

  3. SSG(静态生成)
    构建时:fetch 数据 → 渲染成完整 HTML → 输出静态文件 → 部署到 CDN
    用户请求 → 直接从 CDN 拿 HTML → 显示内容 + 下载 JS → hydration
    结果:首屏最快、CDN 加速、零服务器计算压力,SEO 极好

二、2025-2026 年真实选型决策表(最常用场景)

你的项目最在意的点推荐优先级顺序为什么(2025 视角)
SEO 必须强 + 首屏要快1. SSG → 2. SSR → 3. CSRGoogle 爬虫对 JS 执行能力强,但 SSG/SSR 仍最稳
内容频繁变化 + 个性化SSR(或 ISR)电商商品详情、用户仪表盘、实时新闻
内容几乎不变(博客/文档/营销)SSG(或 ISR)构建一次,全球 CDN 分发,成本最低
纯管理后台 / 内网系统CSR不需要 SEO,追求开发效率和交互流畅
混合需求(大部分静态 + 少量动态)SSG + ISR 或 Next.js App Router 混合现代主流解法
服务器资源非常有限SSG >> CSR > SSRSSG 几乎不耗服务器
弱网/移动端首屏体验最重要SSG > SSR > CSR静态文件 + CDN 最友好

三、现代框架中的实际写法对比(以 Next.js App Router 为例,2025主流)

// 1. CSR(默认就是 CSR,除非你用服务端组件) 'use client'; // ← 标记为客户端组件 import { useEffect, useState } from 'react'; export default function Page() { const [data, setData] = useState(null); useEffect(() => { fetch('/api/data').then(r => r.json()).then(setData); }, []); return <div>{data ? data.title : '加载中...'}</div>; }
// 2. SSR(服务端渲染,每次请求都重新生成) export default async function Page() { const data = await fetch('https://api.example.com/data', { cache: 'no-store' }).then(r => r.json()); return <div>{data.title}</div>; }
// 3. SSG(构建时生成静态页面) export const revalidate = false; // 或不写(默认 SSG) export default async function Page() { const data = await fetch('https://api.example.com/data', { next: { tags: ['static'] } }).then(r => r.json()); return <div>{data.title}</div>; }
// 4. ISR(增量静态再生,SSG 的升级版,Next.js 最推荐混合方案) export const revalidate = 3600; // 每小时重新生成一次(单位:秒) export default async function Page() { const data = await fetch('https://api.example.com/data').then(r => r.json()); return <div>{data.title}</div>; }

四、快速记忆口诀(面试/选型常用)

  • SEO + 快首屏→ 优先 SSG(内容不变)或 ISR(内容偶尔变)
  • 实时个性化→ SSR
  • 极致交互 + 后台→ CSR
  • 现代趋势(2025+)→混合渲染(Next.js App Router / Nuxt 3):大部分页面 SSG/ISR,动态部分 SSR/CSR

如果你当前项目是 Next.js / Nuxt / Remix / Astro / Gatsby 中的某一个,或者你有具体的业务场景(博客?电商?管理后台?),可以告诉我,我可以给你更精确的推荐 + 代码示例。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 11:16:52

Spring MVC核心流程深度解析:从请求到响应的完美掌控

Spring MVC 核心流程深度解析&#xff1a;从请求到响应的完美掌控 Spring MVC 是 Spring 框架中处理 Web 请求的核心模块&#xff0c;基于 Model-View-Controller (MVC) 设计模式。它以 DispatcherServlet 为入口&#xff0c;实现从 HTTP 请求到响应的完整生命周期管理。下面从…

作者头像 李华
网站建设 2026/4/4 0:22:12

Java毕设选题推荐:基于springboot的游戏售卖商城系统基于SpringBoot+Vue的游戏装备交易商城系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/3 10:37:11

【时间之外】AI招聘这么干行不行?

目录 一、背景 二、目标 三、策略 1. 岗位与画像 2. 多元化渠道 3. 构建AI评估体系 4. 实施AI招聘流程 5. 持续优化 四、实施步骤 1. 准备 2. 策略 3. 执行 4. 优化 五、案例 六、总结与展望 一、背景 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&am…

作者头像 李华
网站建设 2026/3/22 16:34:11

Java毕设选题推荐:基于springboot的智慧生产安全系统安全巡检系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/4 3:02:17

Java毕设项目推荐-基于SpringBoot+Vue的植物健康系统管理系统设计与实现基于springboot的植物养护系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华