当我决定在服务器端渲染时,是否应该在服务器上渲染所有内容?

Should I render everything at the server when I decided to Server-side render?

我正在编写一个使用服务器端渲染的社交网站,

例如,当用户创建 post、

时,用户从服务器收到呈现的 post (HTML)

并将 HTML 附加到 Dom。

--

问题来了,

当我选择在服务器上渲染所有内容时,

我应该在哪里渲染 "small things"?

例如,如果我想在用户上传照片之前生成照片预览,

我是否应该在客户端创建一个标签,

然后修改为JavaScript,

或者只是请求服务器预览来制作网站 "fully" 服务器端渲染?

如果我选择前一种方案,我的网站将变得难以管理(因为它就像cilent-side render 加上 server-side render ,这让我难以管理模板)

我更喜欢后一种解决方案,这样我就可以在服务器上管理我的所有模板,

但是要看网速,一旦用户下线我就什么也做不了了,

我该怎么办?

好吧,如果您提出有关渲染位置的问题 "small things",那么您将得到一个模糊的答案。这似乎是一个无关紧要的问题,但答案将由更复杂的问题来回答! IMO,问这个问题比对所有东西应用服务器更好myopic view要好得多。

一般来说,我通过一些约束来查看每个渲染任务所有这些都可能因用户而异!!:

- origin of content (is the information coming from the client?)
- delivering content (network infrastructure)
- viewing content (client hardware)

所以,让我们试着回答一些具体的问题:

For example, if I want to generate a photo preview before user upload a photo, should I create a tag at the cilent side, then modify it with JavaScript, or just request the preview from the server to make y website "fully" server side render?

照片是否来自服务器?

: 有服务器渲染预览

:让客户端渲染它

阅读这篇 Twitter 文章的第一段后,我得出结论,他们的内容最好在服务器上呈现。但进一步阅读表明,它们正在混合它们的渲染 - 一些客户端和一些服务器(复杂 - 就像你说的!)。

但是,我们得出了这个结论 8 MONTHS after they had 100 million users! So, be pragmatic 并选择了能够让您以最少的复杂性构建应用程序的呈现方法。

几个月后,我决定坚持使用 Vue.js 的 Cilent 端渲染(我必须重写所有内容,是的),

原因是:

  1. 更容易管理模板页面
  2. 非常适合存储数据以供 离线使用(因为 CSR 只获取数据,而不是整个页面)。
  3. 分离渲染工作,这样我就可以在我的服务器上花更少的钱
  4. 因为一切都会总是输出到浏览器