前端新手求教:Server-Side Rendering(SSR)中的Server指什么?
理解Next.js中SSR的"Server"概念
首先,你的核心判断没错——SSR确实需要一个能实时处理请求、运行代码的服务器环境,纯静态托管(比如只存放预生成HTML/CSS/JS的CDN)确实做不到SSR的实时渲染逻辑。下面拆解清楚SSR里的"Server"到底是什么、在哪里:
1. SSR里的"Server"到底是什么?
在Next.js的语境中,这个服务器不是抽象概念,是能运行Node.js代码的执行环境,常见有两种形式:
- 自建Node.js服务器:当你在项目中运行
next start时,启动的就是一个Node.js服务器,它会接管所有页面请求,负责处理SSR页面的渲染逻辑。 - Serverless函数/边缘节点:如果用Vercel、Netlify这类平台部署Next.js项目,平台会把你的SSR页面(比如用到
getServerSideProps的页面)打包成Serverless函数。当用户发起请求时,平台会动态分配一个临时运行环境执行这个函数,完成数据获取和页面渲染后再销毁环境——这也是一种服务器,只是不需要你自己维护硬件和常驻进程。
2. SSR中服务器的核心角色
和CSR对比,SSR的服务器多了一个关键工作:
CSR:服务器只返回静态的客户端代码(比如React打包后的JS文件),后续所有API请求、页面渲染全在浏览器端完成。
SSR:当用户请求某个页面时,服务器先执行页面的getServerSideProps函数(如果存在),调用API获取最新数据,再把数据传入React组件,在服务器端渲染成完整的HTML字符串,最后把这个HTML发送给浏览器。浏览器拿到HTML后直接展示内容,同时加载客户端JS完成交互激活(hydration)。
3. 为什么静态托管做不了SSR?
静态托管的本质是存储预先生成的静态文件,它没有能力在用户请求时动态运行代码:
- 静态页面是构建阶段(
next build)生成的,数据是构建时固定的,无法根据用户请求实时更新。 - SSR需要在每次用户请求时,实时拉取最新数据、渲染页面,这必须依赖能运行Node.js代码的服务器环境,静态托管做不到这一点。
4. 补充:Next.js里的其他渲染方式(避免混淆)
别把SSR和SSG(静态站点生成)、ISR(增量静态再生)搞混:
- SSG:构建时生成静态页面,之后可完全静态托管,不需要服务器实时处理。
- ISR:构建时生成静态页面,后续在后台定期更新或按需更新,虽能静态托管,但更新逻辑仍依赖平台的服务器环境。
- SSR:每次请求都实时渲染,必须依赖服务器环境。
内容的提问来源于stack exchange,提问作者WillSmith
相关产品推荐
相关产品推荐

