在实际项目中,常常会碰到“该用服务器渲染还是先生成静态文件”这样的抉择。把握两者的性能本质,往往比单纯追求速度更能决定架构的可持续性。
SSR(Server‑Side Rendering)在每一次请求时都要在服务器上执行完整的渲染流水线,生成 HTML 再返回给浏览器。因为渲染过程与业务逻辑紧耦合,页面的首屏时间(TTFB)直接受到后端负载、数据库查询以及模板编译的影响。
SSG(Static Site Generation)在构建阶段把所有页面预先渲染成纯 HTML,随后通过 CDN 直接分发。由于不再依赖实时计算,用户请求几乎等同于取回一个文件,网络延迟成为唯一瓶颈。
如果业务需要每秒数千次的个性化查询,SSR 的实时渲染优势不可忽视;相反,若页面内容在一天内只会更新一次,SSG 的超低延迟和成本优势则更具说服力。下面的对比表把关键指标浓缩成一目了然的形式。
| 指标 | SSR | SSG |
| 首屏 TTFB | 300‑800 ms | 30‑100 ms |
| 服务器负载 | 随并发线性增长 | 几乎为零 |
| 内容新鲜度 | 实时 | 构建后更新 |
| Hydration 成本 | 必需,额外 JS | 可选或极少 |
把握这些差异,团队可以在同一项目中混合使用:核心业务页走 SSR,营销落地页走 SSG,甚至在同一框架(如 Next.js)里通过 getServerSideProps 与 getStaticProps 交叉布局。这样既能保证实时性,又不必为全站的低频页面背负额外的计算开销。
参与讨论
SSR实时性确实强,电商这块用得好。
SSG的首屏速度真的惊人,CDN一上几乎瞬间返回 😊
其实在混合使用时,getStaticProps 还能配合增量渲染,兼顾更新频率。
SSR在高并发下,CPU占用会不会成瓶颈?
说SSG只能用于低频更新其实有点片面,配合 ISR(增量静态再生成)后,内容可以在后台自动更新,几乎和SSR实时性持平,只是实现方式不同,成本上仍有优势。
我之前项目用SSR,凌晨部署卡住两小时,真是折腾。
Hydration 那段代码总是报错,真让人无语。
看到有人把两者全抛弃,直接用纯前端 SPA,结果首屏慢得要死,估计是想省服务器。