Ajax vs WebSocket
2015-03-21 00:00
155 查看
Ajax有什么优点?
有人回答Ajax可以在页面不刷新的情况下加载并更新数据就是它的优点。这用IFRAME也能做到,根本算不上什么优点。那么Ajax使用起来比 IFRAME方便算是优点了吧?这是不可否认的,但仅此而已。由此我们只能得出一个结论:Ajax比IFRAME方式强。 兼容性好、易学易用。
我为什么不用Ajax?
最重要的原因是它不能满足我的需求,或者说如果非要用Ajax做到同样的效果我需要更大的服务器开销。现代Web的趋势对数据实时同步的需求越来越 高,无论是百度贴吧还是QQ空间,它们的程序都有长轮询在工作,以确保服务器上的数据可以实时推送到客户端。但是长轮询是个开销很大的东西,每次通信都需 要一个新的HTTP请求,如果数据交互频繁,服务器就需要处理很多HTTP请求。而且,HTTP请求头中会发送Cookie等一些不必要的数据,这会浪费 了大量带宽。当然,数据流方式的Comet也是一种不错的做法,他可以规避长轮询的各种问题。但是它需要在低版本IE上需要使用IFRAME做兼容,算不 上纯正的Ajax方式。而且由于浏览器对XHR对象的实现细节目前没有规范的约束,这种Comet方式的稳定性并不好。所以说Comet是Ajax的硬 伤。
为什么用WebSocket?
IE从10才开始兼容
低版本IE我们也可以通过AS上TCP的API来自己封装个WebSocket协议,这在之前的文章中有介绍过。
使用WebSocket的另一大原因是 很多Mobile设备上的浏览器也支持它。
为什么WebSocket至今没有流行起来?
最重要的原因就是兼容性,要是IE6就兼容早就流行起来了!问题是从IE10才开始兼容,虽然对低版本IE的兼容我们可以变相实现,但很多人就是不愿 意使用变相兼容。他们觉得这种实现方式稳定性太差不可靠了。除了兼容性问题就是构架困难的问题,WebSocket的握手协议虽然是形似HTTP但它不 是,所以很多HTTP服务器上难以实现WebSocket。几乎所有CGI方式运行的服务器程序都对WebSocket不友好,所以在服务器方面它就吃了 个闭门羹。
另外,目前也没有什么比较成熟的WebSocket框架可以用,所以一般的开发者都不会考虑它。
什么时候不该用WebSocket?
最大的问题依然是兼容性,虽然我们可以变相兼容到低版本IE上,但是那样就失去了原有的优势。所以如果一个项目面向的用户群使用的浏览器大部分都为低 版本IE时就不该使用WebSocket。另外,WebSocket是长连接,如果客户端的程序没有数据实时同步的需求就没必要使用它。因为长连接会带来 一定的服务器内存开销。如果Ajax就能轻松搞定的话就完全没必要兴师动众的搞WebSocket。
有人回答Ajax可以在页面不刷新的情况下加载并更新数据就是它的优点。这用IFRAME也能做到,根本算不上什么优点。那么Ajax使用起来比 IFRAME方便算是优点了吧?这是不可否认的,但仅此而已。由此我们只能得出一个结论:Ajax比IFRAME方式强。 兼容性好、易学易用。
我为什么不用Ajax?
最重要的原因是它不能满足我的需求,或者说如果非要用Ajax做到同样的效果我需要更大的服务器开销。现代Web的趋势对数据实时同步的需求越来越 高,无论是百度贴吧还是QQ空间,它们的程序都有长轮询在工作,以确保服务器上的数据可以实时推送到客户端。但是长轮询是个开销很大的东西,每次通信都需 要一个新的HTTP请求,如果数据交互频繁,服务器就需要处理很多HTTP请求。而且,HTTP请求头中会发送Cookie等一些不必要的数据,这会浪费 了大量带宽。当然,数据流方式的Comet也是一种不错的做法,他可以规避长轮询的各种问题。但是它需要在低版本IE上需要使用IFRAME做兼容,算不 上纯正的Ajax方式。而且由于浏览器对XHR对象的实现细节目前没有规范的约束,这种Comet方式的稳定性并不好。所以说Comet是Ajax的硬 伤。
为什么用WebSocket?
IE从10才开始兼容
低版本IE我们也可以通过AS上TCP的API来自己封装个WebSocket协议,这在之前的文章中有介绍过。
使用WebSocket的另一大原因是 很多Mobile设备上的浏览器也支持它。
为什么WebSocket至今没有流行起来?
最重要的原因就是兼容性,要是IE6就兼容早就流行起来了!问题是从IE10才开始兼容,虽然对低版本IE的兼容我们可以变相实现,但很多人就是不愿 意使用变相兼容。他们觉得这种实现方式稳定性太差不可靠了。除了兼容性问题就是构架困难的问题,WebSocket的握手协议虽然是形似HTTP但它不 是,所以很多HTTP服务器上难以实现WebSocket。几乎所有CGI方式运行的服务器程序都对WebSocket不友好,所以在服务器方面它就吃了 个闭门羹。
另外,目前也没有什么比较成熟的WebSocket框架可以用,所以一般的开发者都不会考虑它。
什么时候不该用WebSocket?
最大的问题依然是兼容性,虽然我们可以变相兼容到低版本IE上,但是那样就失去了原有的优势。所以如果一个项目面向的用户群使用的浏览器大部分都为低 版本IE时就不该使用WebSocket。另外,WebSocket是长连接,如果客户端的程序没有数据实时同步的需求就没必要使用它。因为长连接会带来 一定的服务器内存开销。如果Ajax就能轻松搞定的话就完全没必要兴师动众的搞WebSocket。
相关文章推荐
- Ajax vs WebSocket
- ajax VS websocket
- vs. 2005也可以使用web application project, 如何把asp.net ajax特性加入呢?
- 前端通信(ajax JSOP SSE websocket)
- 反向Ajax,第3部分:Web服务器和Socket.IO
- WebORB vs AJAX.net
- VS2013利用ajax访问不了json文件——VS2013配置webconfig识别json文件
- Node.Js + Socket.IO vs SignalR vs C# WebSocket Server
- 反向Ajax,第3部分:Web服务器和Socket.IO
- socket VS RMI VS WebService 性能和实现
- VS2013利用ajax访问不了json文件——VS2013配置webconfig识别json文件
- socket VS RMI VS WebService性能和实现
- WebSocket vs REST
- VS 2008版的ASP.NET AJAX控件工具包和Web部署项目
- Socket VS Remoting VS WebService对比
- 客户端-服务器端互动比较与原生实例(比较ajax,server-sent event,websocket/netsocket)
- Ajax+ashx vs Ajax+WebService
- 基于web的服务器push技术:comet vs websocket
- 反向Ajax,第3部分:Web服务器和Socket.IO
- 反向Ajax,第3部分:Web服务器和Socket.IO