Javascript 对于具有高用户交互的网站,客户端渲染还是服务器端渲染更好?

Javascript 对于具有高用户交互的网站,客户端渲染还是服务器端渲染更好?,javascript,html,node.js,template-engine,client-side-templating,Javascript,Html,Node.js,Template Engine,Client Side Templating,我正在开发一个网站,在这个网站上,用户登录到他们的用户帐户,将数据输入到一个表中(我使用tablator),然后保存表中的数据(我使用MongoDB Atlas进行数据存储)。网站有不同的子页面,其中数据与另一个子页面中存储的其他数据交互(例如,网站有“销售”和“库存”子页面,因此当用户进行新的销售时,库存将减少销售额)。基本上,它是一个用户不断对其数据执行CRUD操作的网站 今天,网站是在客户端呈现的。网站的每个子页面都有各自的HTML文件和Javascript文件,其中一个节点文件用于处理所

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

今天,网站是在客户端呈现的。网站的每个子页面都有各自的HTML文件和Javascript文件,其中一个节点文件用于处理所有子页面与Atlas的所有后端通信。我只使用一个或两个不同的用户帐户从我的本地PC上使用和测试了该网页,而且它的工作方式都很好(每个用户都保存和使用自己的数据)

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

  • 继续以我一直使用的方式使用简单的客户端HTML
  • 将HTML呈现为来自节点的响应
  • 使用来自节点的模板引擎

考虑到可伸缩性,您建议采用哪种方案?

我建议您看看vue js框架之类的项目,或者您是否更喜欢react框架

另外,它们结合了服务器端和客户端渲染的优点

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

考虑到您的需要,通用应用程序功能和服务器端呈现可能会帮助您实现所需的可伸缩性

这里有一个来自digital ocean的教程,介绍一个将django后端与nuxt js前端相结合的简单应用程序:

将为您的web应用程序提供使用nuxt js的一些好处


尽管如此,现在最好不要担心可伸缩性。这是。首先专注于为客户(用户)的问题构建解决方案,并在需要时进行扩展。

我建议您看看vue js框架或react框架之类的项目

另外,它们结合了服务器端和客户端渲染的优点

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

考虑到您的需要,通用应用程序功能和服务器端呈现可能会帮助您实现所需的可伸缩性

这里有一个来自digital ocean的教程,介绍一个将django后端与nuxt js前端相结合的简单应用程序:

将为您的web应用程序提供使用nuxt js的一些好处


尽管如此,现在最好不要担心可伸缩性。这是。首先专注于为客户(用户)的问题构建解决方案,并在需要时进行扩展。

您的问题是一个很好的问题,但它有一个几乎无法预测的答案。将一个web应用从少数几个用户扩展到几千个用户,总会发现令人惊讶的性能瓶颈

瓶颈会出现在原始下行带宽上吗?减少对api调用和页面请求的响应会有很大的好处吗?这是可能的,但Heroku和其他优秀的主机供应商在带宽方面做得很好。另外,https在加密数据时对数据进行压缩,因此重复的html并不像看上去那样昂贵。因此,让服务器呈现大量html可能是可以接受的

应用程序数据库界面是否存在一些瓶颈?如果有大量数据和复杂的筛选条件在起作用,则很可能会出现这种情况。每个成功的web应用程序都需要对其数据库保持警惕。对于目前无法想象的问题,您必须添加索引或开发不太优雅的解决方法

接收数据的进程和使用数据的进程之间是否存在争用?可能但这一争论的细节很难预测


tl;博士,你让这东西工作了。现在没有必要重做了。部署你所拥有的。邀请你的用户,并倾听他们的意见。注意它是如何执行的,并将您的调优和重构集中在它们被证明是必要的领域。

您的问题是一个好问题,但它有一个几乎无法预测的答案。将一个web应用从少数几个用户扩展到几千个用户,总会发现令人惊讶的性能瓶颈

瓶颈会出现在原始下行带宽上吗?减少对api调用和页面请求的响应会有很大的好处吗?这是可能的,但Heroku和其他优秀的主机供应商在带宽方面做得很好。另外,https在加密数据时对数据进行压缩,因此重复的html并不像看上去那样昂贵。因此,让服务器呈现大量html可能是可以接受的

应用程序数据库界面是否存在一些瓶颈?如果有大量数据和复杂的筛选条件在起作用,则很可能会出现这种情况。每个成功的web应用程序都需要对其数据库保持警惕。对于目前无法想象的问题,您必须添加索引或开发不太优雅的解决方法

接收数据的进程和使用数据的进程之间是否存在争用?可能但这一争论的细节很难预测

tl;博士,你让这东西工作了。现在没有必要重做了。部署你所拥有的。邀请你的用户,并倾听他们的意见。注意它是如何执行的,并将您的调优和重构集中在它们被证明是必要的领域