Next.js Streaming、Suspense 与 Partial Prerendering
这一块最能看出 App Router 和老式 SSR 的差别。
如果还按过去那种整页 SSR 的习惯去想,页面大概会被理解成:
- 先等所有数据准备好
- 再一次性返回完整 HTML
但现在的 Next 不是这个节奏。页面不一定非得等“所有东西都准备好”才返回,静态部分、缓存部分和运行时部分可以拆开处理。
先分别看三个概念
Streaming
指的是:服务端把已经准备好的 UI 片段先发出来,慢的部分后补。
Suspense
指的是:给一段可能会慢下来的 UI 设一个加载边界。
Partial Prerendering
指的是:先生成一个静态壳层,再把动态部分以流式方式补进来。
在当前官方文档里,这条线已经更多通过 cacheComponents 来组织。也就是说,现在更推荐的理解方式是:
cacheComponents是能力入口Suspense是边界工具- Partial Prerendering 是最终形成的渲染效果