ajax http1.1,Ajax与Http1.1

Http1.1要求每个客户端只能维护与服务器间的两个长连接,这两个长连接一般用于网页与图片等资源的并行加载;如果同时使用Ajax请求,则一定是新开的短连接。

这就造成一种情况,当一个页面提交相当多的Ajax请求时,每一个都会使用短连接与服务器通讯。在通讯完成后,连接随即被关闭。如此,会浪费一定的时间在连接上。

不过这并不是很大的问题,要知道这多次短连接是并发的存在,因此耗费在TCP连接上的时间并不是timexN那么多,与重新创建若干个长连接无二;而后者,则要为维护更多的长连接,付出更少的接入客户端的代价。

IE等浏览器会尝试去用Connection:

Keep-Alive消息头,去请求尽可能多的长连接。如此一来,实际上问题的关键就在于,服务器允许多少同一客户端的长连接。

Asp.Net应用程序默认只允许两个,tomcat之类的应用服务器则没有这么多限制。维持很多的长连接,并非应用服务器的长项,实际上的取值还得根据应用环境而定。

IIS/Apache/Nginx等Web服务器,情况则好得多。一般来说,承载数万个长连接并不是什么难事,所需要的只是使用超时,使得长连接的分配变得公平。

因此,当Ajax应用于请求资源(通常存在于Web服务器)时,无需任何顾虑;用于请求数据(来自于应用服务器)时,要看应用服务器的情况:

同时发起一个数据请求,自然最好是使用长连接,鉴于这种请求往往是网页加载完成后进行,实际上可以复用闲置的长连接,实在不行,浏览器也会自动请求一个新的长连接

同时发起若干/很多数据请求,这是不可取的,最好是顺序的请求数据,让前几次请求开启的长连接被复用,又或者将请求打包到一个Servlet使其一次性返回。就数据接口而言,显然前一个方案更合理。

然而最好的做法就是:

从来不在网页加载完成前提交Ajax请求;

在网页加载完成后,图片等资源加载完成前,提交最多一个Ajax请求;如果要突破这种限制,不妨将服务器端每客户端长连接数设为3-5;

在同一个页面内,提交2个以内的Ajax数据请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值