【问题标题】:For a website with high user interaction, is it better client side rendering or server side renderin?对于一个用户交互高的网站,客户端渲染好还是服务器端渲染好?
【发布时间】:2020-07-09 12:53:31
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript html node.js template-engine client-side-templating


    【解决方案1】:

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

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

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

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

    tl;博士。你有这个工作。现在没必要重做。部署你所拥有的。邀请您的用户,并听取他们的意见。注意它的执行方式,并将调优和重构集中在证明有必要的领域。

    【讨论】:

      【解决方案2】:

      如果您更喜欢 react 框架,我建议您查看 nuxt js 等 vue js 框架或 next js 之类的项目。

      AFAIK,它们结合了最好的服务器端和客户端渲染。

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

      考虑到您的需求,通用应用程序功能和服务器端渲染可能会帮助您实现所需的可扩展性。

      这里有一个来自数字海洋的教程,介绍了一个结合 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。首先专注于为您的客户(用户)问题构建解决方案,并在需要时进行扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        相关资源
        最近更新 更多