【问题标题】:Live updates on website - 1 ajax per second is bad practice?网站上的实时更新 - 每秒 1 个 ajax 是不好的做法?
【发布时间】:2018-04-24 00:27:46
【问题描述】:

我有一个网站,每个用户可以有多个订单。每个订单都有自己的状态。后台进程,根据需要不断更新每个订单的状态。我想实时通知用户他的订单状态。因此,我开发了一个 API 端点,它返回给定用户的所有订单。 在客户端,我开发了一个显示订单的 React 组件,然后每秒向 API 执行一个 AJAX 请求以获取所有订单及其状态,然后 React 将在必要时自动更新。

每秒进行 1 次 AJAX 调用以获取用户的所有订单是一种不好的做法吗?我还能采取哪些其他策略?

【问题讨论】:

    标签: ajax reactjs api architecture software-design


    【解决方案1】:

    是的,是的。您可以使用 Socket 来完成此操作。看看Socket.IO

    编辑:我的意思是,为什么要使用 AJAX 来模拟可以通过为其设计的功能来完成的任务?套接字就是用来做这种事情的。

    想象一下,如果您的用户失去了互联网连接。使用 Socket.IO,您可以很好地处理这个问题。但我不认为使用 AJAX 会那么容易。

    考虑到可扩展性,Socket.IO 被设计为在任何传输上都具有高性能。它基于可能的连接而优雅地降级的方式非常棒,这意味着您的服务器将尽可能少地过载,同时仍能覆盖尽可能多的受众。

    AJAX 可以解决问题,但它不是最好的设计。

    【讨论】:

    • 您能详细说明一下吗?为什么这是不好的做法?
    • socket 更好,因为它基于事件发出建立连接
    • 嘿@Ivan,刚刚编辑了我的答案,谈到为什么在这种情况下我会使用套接字而不是 ajax。
    【解决方案2】:

    对于这个问题没有一个适合所有答案的解决方案。

    首先,这不是一个聊天应用程序,不到 1 秒的延迟不会对用户体验产生太大影响(如果有的话)。

    所以这给我们留下了技术原因,这实际上取决于许多因素:

    您有多少用户(总负载),有多少并发用户在等待他们的订单,您正在使用什么基础架构,您是否还有其他重要的事情要构建,或者您只是想花更多时间编写代码来娱乐?

    如果您有少数用户,那么每秒查询一次并没有什么问题,这很容易,维护开销也更少,而且您说您已经对其进行了编码。

    如果您有几十个或更多并发用户等待状态,最好使用 Websockets。

    在基础设施方面,太多的 websocket 很昂贵(一些云托管对 socket 的数量有限制),所以如果你想走这条路,请记住这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      相关资源
      最近更新 更多