Comet 与传统的 Ajax 轮询相比性能方面是否占优?

Comet 本质上和 C/S 中的通信并不一样,它是通过长连接来模拟推送的。也就是说,在没有数据的时候,这个连接挂起,直到有数据来了(推送),服务器端返回响应,该连接结束,客户端的 JS 重新建立下一个等待连接。

这种方式并不像 C/S 通信建立长期使用的通道,只是长期“等待”而已,避免了在数据更新频率不大的情况下轮询的开销:试想如果五分钟才一次更新,那么轮询方式在此期间几秒钟就要发生一次请求&响应,而这些请求响应都是没有价值的,因为它们并没有传输有用数据。Comet 避免的是这方面的浪费,不再有空请求,因为挂起的连接直到数据更新了才结束。

性能方面,对于数据量不大但需要实时更新的应用来说,Comet 能更有效利用连接,同时因为没有轮询的心跳频率,Comet 会比轮询更加实时——因为只消耗响应的网络传输时间。

但是 Comet 本身并不能在数据传输方面提供比轮询更高的效率,仅仅避免了轮询的空请求浪费。所以 Comet 和 web socket 之类的通讯方式差距还是有的。

大型网站的应用方面,知乎、QQ 邮箱都有用到 Comet,还有新浪微博的私信(聊天)。使用 Comet 主要需要是服务器端的支持,因为使用长连接,所以要有一定负载量一般得使用异步的网络框架,Python 的 tornado、gevent 和 JavaScript 的 node.js 都是此列。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值