文档章节

Ajax vs WebSocket

sheilacat
 sheilacat
发布于 2015/03/21 15:45
字数 856
阅读 55
收藏 0


  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。      

本文转载自:http://www.web-tinker.com/article/20372.html?utm_source=tuicool

sheilacat
粉丝 35
博文 75
码字总数 35249
作品 0
长沙
程序员
私信 提问
认识HTML5的WebSocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用...

进击的程序员
2013/06/21
0
1
看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)

1、前言 最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天...

nnngu
2018/07/21
0
0
漫谈 polling 和 Websocket

原文出处: whthomas的博客(@whthomas93) Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response。这让服务器很为恼火:我特么才是老大,我居然不能给...

oschina
2014/06/28
4.6K
29
认识HTML5的WebSocket 认识HTML5的WebSocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用...

大道至簡
2012/02/29
0
1
Nodejs教程19:WebSocket之一:使用Socket.io建立WebSocket应用

示例代码请访问我的GitHub: github.com/chencl1986/… WebSocket的优势 性能高。 根据测试环境数据的不同,大约会比普通Ajax请求高2-10倍。 HTTP是文本协议,数据量比较大。 而WebSocket是基...

LeeChen
03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

新手转行学java难吗?新手学java需要注意的6个方面!

新手转行在成都学java到底难不难,对于这个问题,我们专门做过一个调查,超过1000名已经在职的java从业者,其中有80%的程序员觉得学java不难,20%的程序员觉得前期有点难,其中对于50%自学的...

Java领航员
49分钟前
3
0
动态规划-硬币问题分析

什么是动态规划 上次对动态规划已经有了个大概的分析。引用维基百科的话就是: dynamic programming is a method for solving a complex problem by breaking it down into a collection of...

AI考拉
57分钟前
1
0
谈谈lucene的DocValues特性之SortedSetDocValuesField

SortedSetDocValuesField与SortedDocValuesField类似但它是一键多值的(注意:lucene的数据模型是支持一键多值的即key-values模型),lucene在实现时会判断是一键一值还是多值,如果单值就调...

FAT_mt
今天
1
0
生产者消费者模式

//尚学堂视频里,不是完整的 public class Movie { /** * 共同的资源 */ private String pic; //flay为true生产,false消费 private boolean flag=true; public synchronized void play(Str......

南桥北木
今天
1
0
使用阿里云镜像安装kubernetes

参考阿里云镜像 https://opsx.alibaba.com/mirror?lang=zh-CN 系统: CentOS / RHEL / Fedora cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https......

北漂的我
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部