SSR面试

2 阅读4分钟

好,那我直接给你一份可以“背”的 SSR 面试话术 + 追问拆解,按真实面试节奏来,你基本照这个说就很稳👇


🧠 一、SSR 标准回答模板(开场必杀)

当面试官问: “讲一下 SSR”

你可以这样答👇

SSR(服务端渲染)指的是在服务端将组件渲染成 HTML 字符串,直接返回给浏览器,从而提升首屏加载速度和 SEO 效果。

它的核心流程是:服务端生成 HTML → 浏览器直接展示 → 客户端进行 hydration(激活)绑定事件。

相比 CSR,SSR 首屏更快、SEO 更友好,但代价是服务端压力更大、开发复杂度更高,需要做同构处理。

👉 这一段说完,基础分已经拿满


🔥 二、面试官必追问(逐层递进)


❓追问1:什么是 hydration?

👉 标准话术:

hydration 本质是客户端接管服务端渲染出来的 HTML,把静态页面变成可交互页面。

它不是重新创建 DOM,而是复用已有 DOM,并绑定事件和状态。

👉 加分点(一定说):

如果服务端和客户端渲染结果不一致,就会出现 hydration mismatch 报错。


❓追问2:为什么会出现 mismatch?

👉 标准话术:

本质原因是服务端和客户端执行结果不一致。

👉 举 3 个典型例子(面试最爱):

Date.now()
Math.random()
window.innerWidth

👉 解决方案:

  • 避免在 render 阶段写不确定逻辑
  • 副作用放到 mounted / useEffect
  • 保证渲染是“纯函数”

❓追问3:SSR 为什么快?

👉 标准话术:

SSR 快的核心原因是:
浏览器拿到的是“完整 HTML”,可以直接渲染,而 CSR 需要先下载 JS 再执行再生成 DOM。

👉 再补一句(加分):

本质是把“渲染过程前移到服务端”。


❓追问4:SSR 一定更快吗?(坑题⚠️)

👉 正确回答:

不一定。

SSR 提升的是“首屏速度”,但如果服务端渲染慢、网络慢,或者 JS 很大,整体体验未必更好。

👉 加分总结:

SSR 优化的是 FCP,不一定优化 TTI。


❓追问5:SSR 如何做数据预取?

👉 标准话术:

SSR 会在服务端先请求数据,然后把数据注入到 HTML 中,客户端直接复用,避免重复请求。

<script>
  window.__INITIAL_DATA__ = {...}
</script>

👉 再补一句:

客户端 hydrate 时直接用这份数据初始化 store。


❓追问6:SSR 如何做缓存?

👉 标准话术(分层说):

SSR 的性能优化核心在缓存:

  1. 页面级缓存(HTML 缓存)
  2. 接口缓存(Redis)
  3. CDN 缓存

👉 加一句高级点:

热点页面可以直接缓存 HTML,避免重复 SSR 渲染。


❓追问7:什么项目适合 SSR?

👉 标准话术:

适合:

  • 电商(商品详情)
  • 内容网站(新闻 / 博客)

不适合:

  • 后台管理系统(你这种前端项目)

👉 面试加分一句:

管理系统更适合 CSR,因为交互复杂且不依赖 SEO。


⚙️ 三、框架相关话术(必须会)


React SSR

👉 必须提到:

  • renderToString
  • React 18 流式 SSR

可以说:

在 React 中可以用 renderToString 做基础 SSR,在 React 18 中可以使用流式渲染提升性能,比如通过 streaming 提前返回 HTML。


Vue SSR

👉 标准说法:

Vue 3 使用 @vue/server-renderer 实现 SSR,核心也是把组件转成 HTML 字符串。


主流框架(必须提)

  • Next.js
  • Nuxt.js

👉 可以这样说:

实际项目中一般不会手写 SSR,而是使用像 Next.js 或 Nuxt.js 这样的框架。


🚀 四、拉开差距的高级问题(重点)


❓流式 SSR 是什么?

👉 标准话术:

流式 SSR 是指把 HTML 分块返回,而不是一次性返回,可以更快展示页面。

👉 一句话总结:

“边渲染边返回”


❓SSR 最大瓶颈?

👉 标准话术:

  • Node 计算压力
  • 数据请求慢
  • 并发问题

👉 加分:

可以通过缓存 + 流式 SSR + 边缘渲染优化。


❓什么是边缘渲染(Edge SSR)?

👉 标准话术:

把 SSR 放在 CDN 边缘节点执行,减少网络延迟。

👉 举例:

  • Cloudflare
  • Vercel

🧩 五、结合你(前端工程师)加分回答

这个你说出来,很容易“碾压面试官”👇


👉 SSR 和微前端怎么结合?

一般是主应用 SSR,子应用 CSR

如果子应用也 SSR,会涉及多服务协调,复杂度很高。


👉 SSR 和 Vite?

Vite 主要解决开发体验问题,但 SSR 仍然需要 Node 在服务端执行代码。


🎯 最后一段(面试总结必杀)

当面试官说: “你总结一下 SSR”

直接说👇

SSR 的核心价值是优化首屏渲染和 SEO,本质是把渲染过程从客户端前移到服务端,再通过 hydration 实现客户端接管。

但它的代价是增加服务端压力和同构复杂度,所以需要结合业务场景选择。