Next.js中“在用户请求前预渲染页面”是什么意思?静态生成与SSR有何区别
Next.js「用户请求前预渲染页面」概念说明
你提到的官方原文如下:
另一方面,如果你无法在用户发起请求前预渲染页面,那么静态生成并不是一个好的选择
这句话是对静态生成(SSG)核心运行逻辑的直接描述,具体含义可以拆分理解:
- 静态生成的页面渲染动作,发生在项目构建(build)阶段,也就是你把代码打包上线前就已经全部执行完成,时间点远早于任何真实用户发起访问请求的时刻
- 构建阶段会直接生成好完整的页面HTML、关联的静态资源和提前拉取的页面数据,这些静态文件会直接存放在服务器或者CDN节点上,用户请求到达时不需要做任何额外计算,直接返回现成文件即可
如果满足以下任意一种场景,就属于「无法在用户请求前预渲染页面」的情况,不适合用静态生成:
- 页面内容和用户身份强绑定,比如用户个人中心、订单页等,不可能在构建阶段就提前生成所有用户的专属页面
- 页面内容依赖只有请求时才能拿到的动态参数,比如用户请求携带的Cookie、请求头地域信息、实时查询参数等,构建阶段无法获取这些数据
- 页面内容更新频率极高,比如实时行情、直播比分、即时公告等,构建生成的静态页刚上线就会过期,无法满足内容时效性要求
你可以结合SSR的逻辑做对比理解:SSR的渲染动作发生在用户请求到达之后,每次请求都会临时拉取数据、渲染HTML再返回,刚好适配上述无法提前预渲染的场景。
内容的提问来源于stack exchange,提问作者tanjona Randrianasolo
相关产品推荐
相关产品推荐

