HTTP Push

之前做BAM,一直认为客户端会不停的访问服务器端来取得最新数据,就是Pull。用httpwatch观察一段时间,发现在普通情况下都没有网络请求,就是说IE没有不停的像服务器请求数据,那数据怎么发到浏览器的呢?

HTTP是无状态的协议,客户端请求一个URL,服务器端响应,发回响应内容,断开连接。正常来说是这样运行的,但是如果服务器端不断开连接呢? 好了,如果没断开连接,那么理论上来说,服务器就可以不停的把最新数据发到浏览器。这就是基于HTTP的Push机制了。奇怪但很有意思的用法。

搜了一些资料,http的push大概有三种方式:

1.Polling:浏览器不停的发出请求获得最新数据,模拟成push。通常用ajax实现

          缺点: 延迟大,而且网络可能被拖垮

2.Streaming:就是前面提到的方式,服务器不断开连接。通常可以用一个隐藏iframe来连接服务器,把数据发到隐藏的iframe里

,不能用ajax实现,因为在IE里ajax不能支持把数据分块发到客户端。

          缺点: 代理支持不好,因为代理可能会缓存数据

3.Long-Polling:浏览器发请求,服务器接到后挂起连接,直到有数据要发送到客户端,发完数据后断开连接;客户端接收到数据,又再一次请求服务器拿数据。通常用ajax实现

          没什么缺点,但是如果数据变化很频繁,网络负载也会很大。

另外,IE还有个限制:对同一个服务器的连接,最多只能有2个连接同时存在。这是W3C的规定,也就是说,如果我们用Streaming或者Long-Polling,就会直接占掉两个中的一个,所以它们不适合有多个push数据点的应用。

参考:http://en.wikipedia.org/wiki/Push_technology

http://en.wikipedia.org/wiki/Comet_(programming)

http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/adv_ads.htm#CIHJGFHH

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值