2

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

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

4

3 回答 3

3

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

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

于 2012-09-13T17:17:54.357 回答
0

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

http://www.websocket.org

于 2012-09-13T17:10:02.150 回答
0

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

例如,参见棘轮

于 2012-09-13T17:10:22.553 回答