React 服务端直出与客户端请求边界

React SSR 场景下服务端直出与客户端请求的职责边界,以及它们和首屏体验、交互节奏之间的关系。

#tech / dev / frame #resource / react #type / synthesis #status / growing

[!info] related notes

React 服务端直出与客户端请求边界

SSR 场景里最容易答散的问题,就是“哪些内容应该先由服务端直出,哪些内容可以留到客户端再请求”。

一句话定义

服务端直出更适合首屏必须稳定看到的内容;客户端请求更适合交互后才需要、个性化更强、或可以延后加载的内容。

为什么这组边界要单独理解

  • 它决定用户第一次看到的页面是否完整
  • 也决定页面接手后是不是还要立刻补很多请求
  • 如果边界划错,可能同时损害首屏体验和交互节奏

服务端直出更适合什么

  • 首屏主内容
  • SEO 依赖的正文信息
  • 页面结构强依赖的数据

客户端请求更适合什么

  • 用户登录后才知道的个性化附加信息
  • 点击、筛选、分页、展开后才需要的数据
  • 可延迟展示、不影响首屏主体判断的内容

一个常见的平衡思路

  • 先让用户看到稳定的页面骨架和核心内容
  • 再让客户端按交互节奏补增量信息
  • 不要为了“全服务端”把非关键内容全塞进首屏阻塞链路

常见误区

  • 以为 SSR 页面就不该再有客户端请求
  • 以为所有数据都客户端拉最灵活,所以首屏空一点没关系
  • 只看技术路线,不看业务对首屏完整度的要求

最短记忆方式

先直出用户一进来必须看到的,再请求用户接下来才需要的。

面试要点

来自 react-server-render-vs-client-request-boundary-interview-question 的面试视角整理。

一句话回答

首屏必须稳定看到、影响页面主体判断和 SEO 的内容更适合服务端直出;交互后才需要、个性化更强或可以延后加载的内容更适合客户端再请求。核心是围绕首屏价值和交互节奏划分,不是追求纯服务端或纯客户端。

最稳的回答主线

  • 先说首屏主内容优先直出
  • 再说交互后增量内容可放客户端请求
  • 再补一句:边界不是固定技术答案,而是业务优先级答案
  • 最后强调:目标是同时平衡首屏完整度和接手后的灵活性

一个更完整的面试表达

可以这样答:

我一般会按“用户一进来必须马上看到什么”来划分。影响首屏主体理解、SEO、页面主内容判断的数据,更适合服务端直出;交互后才需要、个性化更强、或者可以延后加载的内容,更适合客户端再请求。
所以这不是纯服务端或纯客户端的技术站队问题,而是围绕首屏价值和交互节奏做边界划分。

一个典型划分方式

更适合服务端直出的:

  • 商品详情主内容
  • 文章正文
  • SEO 关键内容
  • 首屏列表主体

更适合客户端再请求的:

  • 个性化推荐
  • 下拉翻页后的增量数据
  • 非首屏评论区
  • 用户交互后才展开的细节内容

面试里容易加分的一句

真正成熟的 SSR 方案,通常不是“把所有内容都提前渲出来”,而是先把用户最在意的第一屏做稳,再把剩余内容按交互节奏渐进加载。

常见追问

  • 个性化内容一定不能服务端直出吗
  • 为什么有些 SSR 页面加载后还是会继续发很多请求
  • 这和 hydration 成本有什么关系

最短记忆方式

先稳首屏,再补增量。

创建于 2026/3/19 更新于 2026/5/27