AJAX刷新 - 只在更改时更新,有一个很好的解决方案吗?

时间:2012-01-30 11:32:32

标签: javascript jquery ajax http

我使用AJAX的次数越多,我发现自己面临着同样的问题:我希望屏幕上的数据尽可能地保持最新,但每秒下载相同的数据都是过时的。数据可能每30分钟只更改一次,但一旦发生,我希望立即反馈给用户。

让我的服务器端脚本返回描述先前数据之间差异的数据可能是一个很好的解决方案,但并非总是如此。

这是否有一个简洁的解决方案,或者这只是我将不得不忍受的东西?

3 个答案:

答案 0 :(得分:1)

Nodejs和Socket.io。它完全不同。在您的解决方案中,每个打开的窗口都会向服务器发送一个请求,因此会有大量无用的请求。具有Sokcet.io的Nodej是一个真正的PUSH引擎。您可以通过套接字连接用户,并推送它们通知,页面应该刷新,或者更新数据本身。

NodejsSocket.io链接。

答案 1 :(得分:0)

你必须每次查询服务器,这是给定的。您可以做的是在服务器中测试是否有任何要更新的新数据,如果没有,只返回类似'false'的内容,这样回调就不会做任何事情,每次传递的数据都会减少。 / p>

答案 2 :(得分:0)

您正在寻找彗星或长轮询技术。这是一个很好的解释的一般描述:http://www.ibm.com/developerworks/web/library/wa-reverseajax4/?ca=drs-
此外,cometd网站将使用jquery或dojo:http://cometd.org/

另一个解决方案是Atmosphere:https://github.com/Atmosphere/atmosphere
同样在这里:http://jfarcand.wordpress.com/2010/06/15/using-atmospheres-jquery-plug-in-to-build-applicationsupporting-both-websocket-and-comet/