前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库React CSR 与 SSR 渲染流程区别
ReReact服务端与流式渲染

React 的 CSR 与 SSR 在首屏生成流程上有什么区别?

先看浏览器收到的 HTML 里有没有业务正文,再看这些内容何时获得 React 的交互逻辑。

前端进阶之旅 · 一题精讲更新于 2026.09.06
React#服务端与流式渲染#流处理
先看核心答案
理解线索

沿着首次导航观察三段工作

  1. 响应内容外壳 HTML 还是已经包含业务正文的 HTML
  2. 数据位置浏览器请求数据,或服务端提前取得初始快照
  3. 交互接管浏览器执行组件逻辑,创建或复用已有 DOM

这里比较典型首次导航;预加载、缓存、静态生成和客户端路由会改变具体请求顺序,不能画成所有项目都相同的固定瀑布。

核心回答

先记住这个答案

典型 CSR 首次请求先得到页面外壳与资源入口,浏览器加载并执行 JavaScript,再获取或使用数据生成业务 DOM。SSR 则在服务端把组件和初始数据渲染为 HTML,浏览器可以先解析显示正文,之后加载客户端代码并通过 hydration 接管需要交互的部分。SSR 把一部分首屏生成工作前移,但不等于没有客户端计算,也不保证所有性能指标都更快;实际链路还受数据耗时、缓存、流式边界和 JavaScript 体积影响。

  • CSR 的业务 DOM 主要由浏览器生成
  • SSR 先提供正文 HTML,再接管交互
  • 首屏可见与 React 可交互要分别测量

CSR 将主要界面生成留给浏览器

以公开题目页为例,若初始响应只有根容器,浏览器需要先下载入口脚本,执行路由与组件,再取得题目数据并创建正文。脚本或数据请求出错时,用户可能只看到外壳,因此要检查加载状态与失败路径。

并不是所有 CSR 都必须串行经历脚本之后才发数据请求。预加载、内嵌初始数据和资源缓存可以缩短链路;描述流程时应以实际网络记录为准,避免把常见的请求瀑布误说成架构不可改变的限制。

SSR 提前生成正文,但仍有服务端等待

SSR 请求通常需要完成路由匹配、数据读取与服务端渲染,才将相应 HTML 发给浏览器。浏览器可以在客户端包尚未执行时显示收到的文本与图片,不过服务端数据慢也可能推迟首字节和正文到达。

流式渲染允许先发送已就绪的外壳或边界,再补充后续内容,具体收益取决于边界位置与数据就绪情况。它不是跳过数据依赖,页面最关键的正文如果仍在慢边界里,用户照样需要等待。

正文可见之后,还有交互和后续导航

HTML 能展示不代表 React 状态和事件处理器已经接管。hydration 需要客户端代码与一致的初始输入,仍消耗解析、执行和协调时间;原生链接或表单则可能在 React 接管前已有浏览器行为。

后续站内导航可以由客户端路由更新局部界面,不必每次重复首次 SSR 流程。构建时静态生成也能提前提供正文 HTML,所以讨论某页面方案时,要分别说明 HTML 生成时机、缓存方式和客户端交互范围。

回答前,多想一步

容易答错的地方

把 SSR 说成浏览器不执行 React
需要客户端交互的部分通常仍要加载相关代码并建立运行时状态。SSR 改变初始内容的来源,不能自动消除 JavaScript 体积和 hydration 成本,优化时仍需关注发送了多少交互代码。
只用首字节判断首屏方案优劣
首字节可能更快但正文仍在等待脚本,也可能略晚却直接带来完整内容。应同时观察正文到达、主要内容绘制和交互响应,并记录后端数据与缓存命中情况,才能解释用户实际体验。
试着用自己的话回答

面试官还会怎么问?

静态生成属于哪一段流程的变化?

静态生成把 HTML 生成提前到构建或预生成阶段,请求时可直接分发已有内容。浏览器仍可能需要 hydration,因此它改变的是生成时机和服务端请求成本,并不等于完全没有客户端交互代码。

SSR 会自动减少接口请求数量吗?

不会自动保证。初始数据可以复用给客户端以避免重复读取,但如果客户端挂载后又无条件请求同一数据,仍会产生额外请求。需要明确数据快照传递、缓存和重新验证策略。

面试中怎样清楚地讲这条链路?

选定首次打开某个 URL,依次说明响应包含什么、数据在哪里取得、正文何时形成、React 何时接管。然后补上缓存或流式渲染的影响,比笼统说服务端快、客户端慢更准确。

从一道题,走向一组知识

把知识连起来

服务端与流式渲染

React SSR 已经输出 HTML,为什么还需要 hydration?

继续解释已有 HTML 为什么仍需要建立 React 交互关系。

服务端与流式渲染

React SSR 有哪些代价,什么场景值得使用?

根据内容、数据和运行成本选择具体渲染方案。

服务端与流式渲染

React SSR 如何帮助 SEO 和社交分享,CSR 页面一定不能收录吗?

理解初始正文与元信息对搜索及分享抓取的作用。

参考资料

  • React 官方:hydrateRoot
  • React 官方:renderToPipeableStream

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. CSR 将主要界面生成留给浏览器
  3. SSR 提前生成正文,但仍有服务端等待
  4. 正文可见之后,还有交互和后续导航
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑