【问题标题】:Would using constant ajax requests for a real time application put a strain on a server/database?对实时应用程序使用恒定的 ajax 请求会给服务器/数据库带来压力吗?
【发布时间】:2012-09-06 20:13:56
【问题描述】:

好的,所以我试图构建类似于实时应用程序的东西(一旦添加就从数据库中获取新数据的东西),我能想出的唯一解决方案是不断使用 ajax 请求(通过setInterval() 方法)每隔几秒钟检查一次新信息,但我很好奇这会给数据库或服务器带来什么样的压力。

做这样的事情会不会过分,还是有更好的方法来构建实时应用程序?

【问题讨论】:

  • 好吧,至少这种方法可以轻松估计不同预计用户数量的带宽使用情况:-)

标签: php javascript mysql ajax real-time


【解决方案1】:

如果您的应用程序可以使用 HTML 5,我会推荐 Web 套接字。

http://www.websocket.org

【讨论】:

    【解决方案2】:

    更好的方法是使用网络套接字或类似方法。

    例如,请参阅Ratchet

    【讨论】:

      【解决方案3】:

      您的问题归结为两个选项,long pollingshort polling。在第一个选项中,AJAX 请求被发送到服务器。服务器搜索新的更新。如果找到,它会立即返回。否则它会休眠,比如说 0.5 秒,然后它会再次搜索更新。这会持续一段时间,然后发送数据数组中的任何内容。收到响应后,JS 可以采取适当的响应(如果有 一些数据,也许用它来操纵 DOM),并发送另一个请求,然后这个无限继续。这有一个缺点,即它在服务器端消耗大量资源。但是,如果您希望新的更新几乎立即反映(例如在 Facebook 中),这可能是您最好的选择。

      在第二个选项中,正如您所提到的,服务器端的负载减少了。但是反映更新所花费的时间可能会更长。另外,如果用户的网速很慢,也会增加延迟。更不用说,重复请求我浪费了用户带宽(尽管如果您设计您的网站以确保只发送最少的数据,这可以得到缓解)。 Websockets API 可能很方便,但据我所知,并非所有浏览器都完全支持它,最新版本除外。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多