跳到正文

服务端渲染

Server-side Rendering

高级网页

服务端渲染(Server-side Rendering)是在收到页面请求后,由服务器生成包含页面内容的 HTML,再发给浏览器。它让用户在页面 JavaScript 运行前就能看到内容,也方便搜索引擎读取商品页、文章页等公开页面。

你可能会说:「我想让文章页打开时就有正文,不用等浏览器把脚本跑完才显示内容。」

读之前建议先了解(这是一个高级概念)

动手看看

页面请求浏览器页面服务器生成页面
1

用户打开商品页,浏览器向服务器请求页面;服务器收到请求后,开始生成商品内容。

要点

  1. 1

    服务器先生成当前页面内容

    你打开一篇文章时,服务器可以先取出文章数据,把标题和正文放进 HTML,再返回给浏览器。这样浏览器收到响应后,就有内容可以显示。

  2. 2

    交互可能还要等浏览器接手

    页面能显示,不代表所有交互都已就绪。如果按钮由前端框架接管,浏览器通常还要加载 JavaScript,并完成注水激活,按钮才会按预期工作。

  3. 3

    每次请求可能带来服务器开销

    因为页面内容可能在请求到来时才生成,所以渲染会占用服务器资源,也可能增加响应时间。我们会根据内容更新频率,决定哪些页面需要这样处理。

容易混淆的地方

它和纯客户端渲染的区别,在于页面主要内容由谁先生成:后者通常先返回页面框架,再由浏览器运行 JavaScript 取得并显示内容。它也不同于静态站点生成:静态页面通常提前生成,服务端渲染则可以在收到请求时生成页面。一个网站可以按页面混用这些方式。

什么时候用

适合用

  • 做公开的商品详情页,价格和库存会变化,你希望访问者打开页面时就能看到当前内容。
  • 做文章或帮助中心页面,希望浏览器收到的 HTML 已包含正文,方便内容被读取和索引。
  • 做需登录的订单详情页,希望服务器按当前用户取数据,生成首次显示的页面内容。

不适合用

  • 做内部使用的绘图工具,主要内容由用户在浏览器里实时编辑;客户端渲染更贴合这种交互。
  • 做很少更新的活动介绍页,所有访客看到的内容相同;提前生成静态页面通常更简单。

练一练

你在做一个帮助中心:文章公开、更新不频繁,希望打开时就能看到正文。你会怎样选择渲染方式?

让 AI 帮你做

请检查现有前端框架的页面实现:让公开文章详情页使用服务端渲染,首次返回的 HTML 包含标题和正文。保留现有交互,并说明数据在哪里获取、哪些交互需要注水激活;不要把仅在服务器可用的信息传给浏览器。

接下来学什么