使用常量ajax请求实时应用程序会给服务器/数据库带来压力吗?

时间:2012-09-13 17:07:43

标签: php javascript mysql ajax real-time

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

做这样的事情是否有点过分或者是否有更好的方法来构建实时应用程序?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

http://www.websocket.org

答案 2 :(得分:0)

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

例如,请参阅Ratchet