AJAX推送与拉取方式的比较

开发 前端
使用Ajax可以开发出基于浏览器的具有高用户交互性和几乎不易觉察到延迟的web应用,本文向您介绍AJAX推送的相关知识。

  实时的动态数据比如新闻标题、证券报价和拍卖行情都需要尽快地发送给用户。然而,AJAX仍然受限于web请求/响应架构的弱点,使得服务器不能推送实时动态的web数据。

  Delft科技大学的Engin Bozdag、Ali Mesbah和Arie van Deursen一起讨论了下面这些可以实现基于web的实时事件通知的方法:

  1.HTTP拉取方式:在这种传统的方法中,客户端以用户可定义的时间间隔去检查服务器上的最新数据。这种拉取方式的频率要足够高才能保证很高的数据精确度,但高频率可能会导致多余的检查,从而导致较高的网络流量。而另一方面,低频率则会导致错过更新的数据。理想地,拉取的时间间隔应该等于服务器状态改变的速度。

  2.HTTP流:这种方法由存在于不间断的HTTP连接响应中或某个XMLHttpRequest连接中的服务器数据流所组成。

  3.反转AJAX:服务流应用到AJAX推送,就是所谓的反转AJAX 或者COMET 。它使得服务器在某事件发生时可以发送消息给客户端,而不需要客户端显式的请求。目标在于达到状态变化的实时更新。COMET使用了HTTP/1.1中的持续连接的特性。通过HTTP/1.1,除非另作说明,服务器和浏览器之间的TCP连接会一直保持连接状态,直到其中一方发送了一条明显的“关闭连接”的消息,或者有超时以及网络错误发生。

  4.长时间轮询:也就是所谓的异步轮询,这种方式是纯服务器端推送方式和客户端拉取方式的混合。它是基于BAYEUX协议的。这个协议遵循基于主题的发布——订阅机制。在订阅了某个频道后,客户端和服务器间的连接会保持打开状态,并保持一段事先定义好的时间。如果服务器端没有事件发生,而发生了超时,服务器端就会请求客户端进行异步重新连接。如果有事件发生,服务器端会发送数据到客户端,然后客户端重新连接。

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

【编辑推荐】

  1. 高手Java核心技术学习笔记
  2. 告诉你怎样学Java才是硬道理
  3. 如何获取Sun推出的Java认证
  4. 共同学习Java环境变量
  5. JAVA环境变量的设置
责任编辑:王观 来源: 天极网
相关推荐

2013-01-15 11:22:29

AjaxASP.NET

2013-04-10 18:48:56

微信公众平台技巧

2012-12-25 16:23:10

Android推送

2012-08-23 09:56:40

AJAX

2023-11-06 01:39:02

Go语言开发

2010-06-24 16:42:30

视频监控

2009-06-25 13:43:00

Buffalo AJA

2009-07-30 12:19:32

ASP.NET中使用A

2011-07-04 15:41:14

AjaxASP.NET

2022-12-13 09:01:50

云原生组件数据

2019-10-21 11:43:00

DockerGradleJava

2011-04-01 16:14:17

ADSL接入方式PPPoE

2009-12-25 16:58:19

ADSL接入方式

2011-07-12 13:53:25

ASP.NETAjax

2009-06-23 13:55:20

JavaFXRIA

2010-04-25 16:55:38

实现负载均衡

2020-06-12 08:28:29

JavaScript开发技术

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2020-11-02 09:53:13

Hive数据算法

2024-04-22 08:33:55

ReactDiffObject.is
点赞
收藏

51CTO技术栈公众号