日期:2014-05-16  浏览次数:20751 次

Ajax推送与拉取方式的优缺点

在他们的实验性研究中,作者们在一个利用COMET推送方式实现(Dojo的Cometd库)的AJAX应用和一个纯拉取方式的应用之间,对数据一致性、服务器性能、网络性能以及数据遗失进行了比较。

他们总结说:

??? “...如果我们想要高数据一致性和高网络性能,我们就应该选择推送方式。但是,推送会带来一些扩展性问题;服务器应用程序CPU使用率是拉取方式 的7倍。根据我们的结果,服务器性能会在350-500个用户时趋于饱和。对于更大数量的用户,负载均衡和服务器集群技术就在所难免了。?
?????
??? 使用拉取方式,要想达到完整的数据一致性以及很高的网络性能是很困难的。如果拉取的时间间隔大于数据更新的时间间隔,就会发生一些数据的遗失。而如果小于数据更新的时间间隔,网络性能就会受到影响。拉取方式只有在拉取时间间隔等同于数据更新时间间隔时,才会恰到好处。但是,为了达到那样的目标,我们就需要提前知道准确的数据更新时间间隔。然而,数据更新的时间间隔很少是静态不变并可以预知的。这使得拉取方式只有在数据是根据某种特定模式发布的情况才 有用。”

一些其他Comet Ajax服务器推送模型的实现:

??? *
????? Orbited :一种开源的分布式Comet服务器
??? *
????? AjaxMessaging :Ruby on Rails的Comet插件
??? *
????? Pushlets :一个开源框架,可以让服务器端java对象推送事件到浏览器端javascript,java applet,或者flash应用程序
??? *
????? Lightstreamer :提供基于AJAX-COMET模式的HTTP流的商业实现
??? *
????? Pjax :Ajax的推送技术