对于用户交互性高的网站,客户端渲染好还是服务端渲染好?

For a website with high user interaction, is it better client side rendering or server side renderin?

我正在开发一个网站,用户可以在其中登录他们的用户帐户,将数据输入 table(我正在使用 Tabulator),然后保存 table 中的数据(我正在使用 MongoDB Atlas 进行数据存储)。该网站有不同的子页面,其中数据与存储在另一个子页面中的其他数据交互(例如,该网站有一个 "Sales" 和一个 "Inventory" 子页面,因此当用户进行新的销售时,库存将减少按销售额)。基本上它是一个网站,用户在其中不断地对其数据执行 CRUD 操作。

今天网站在客户端呈现。网站的每个子页面都有自己单独的 HTML 文件和单独的 Javascript 文件,一个节点文件处理所有子页面与 Atlas 的所有后端通信。我只使用和测试本地 PC 上的网页,使用一个或两个不同的用户帐户,一切正常(每个用户保存和使用自己的数据)。

现在,考虑到我计划部署网站(到域或 Heroku),并可能获得成百上千的不同用户,我一直在研究这个选项:

考虑到可扩展性,您会推荐哪个选项?

如果您更喜欢 React 框架,我建议您看看 nuxt js for the vue js framework or next js 这样的项目。

据我所知,它们结合了服务器端和客户端渲染的优点。

这两个框架用于构建具有各种有用特性的范围广泛的应用程序。

考虑到您的需求,通用应用程序功能和服务器端呈现可能会帮助您实现您正在寻找的可扩展性。

这是来自 digital ocean 的教程,介绍了一个将 django 后端与 nuxt js 前端相结合的简单应用程序:How To Build a Universal Application with Nuxt.js and Django

This article 将为您提供将 nuxt js 用于您的网络应用程序的一些好处。

综上所述,现在最好不要担心可伸缩性。这是one of the main reasons why startups fail。首先专注于为您的客户(用户)问题构建解决方案,然后在需要时进行扩展。

你的问题很好,但它的答案几乎无法预测。将 Web 应用程序从少数用户增加到几千 always 会发现令人惊讶的性能瓶颈。

原始下行带宽是否会成为瓶颈?减少对 api 呼叫和页面请求的响应是否会有很大的收获?这是可能的,但 Heroku 和其他优秀的主机供应商在带宽方面做得很好。此外,https 在加密数据时压缩数据,因此重复 html 并不像看起来那么昂贵。因此,让您的服务器呈现大量 html 可能是可以接受的。

应用-数据库接口会不会有一些瓶颈?如果大量数据和复杂的过滤标准在起作用,则很有可能。每个成功的 Web 应用程序都需要对其数据库保持警惕。对于您目前无法想象的问题,您将不得不添加索引或开发不太优雅的解决方法。

您会在摄取数据的进程和使用数据的进程之间发生争用吗?大概。但争论的细节很难预测。

tl;博士。你有这个东西在工作。现在不需要返工了。部署你所拥有的。邀请您的用户,并听取他们的意见。注意它的性能,并将您的调整和重构集中在证明有必要的地方。