对同一域名进行请求的并发连接数限制

本文探讨了浏览器对同一服务器的并发请求限制,并通过实验验证了不同浏览器的实际限制数量,揭示了实际设置与HTTP协议规定的差异。
在以前的公司一直都有一个困惑,就是网站的图片等的请求,总是会有
[img]http://dl.iteye.com/upload/picture/pic/110763/04925091-0cb3-3f4d-b898-ab0104dd822f.png[/img]

也就是请求了一定量的静态文件之后,就必须要等之前的请求完毕的,然后再去请求剩下的。也就是我们理解的,请求有一个并发的限制,一旦到了这个数目,其实就要阻塞,直到前面的完成之后再去请求。如此,明显会影响网站请求的性能。

现在来到了新的公司,发现了公司的项目的请求的情况是
[img]http://dl.iteye.com/upload/picture/pic/110765/10c9f56b-76cf-3024-ab0e-2616d2ae7e41.png[/img]

也就是,仔细看的话,会发现其实请求的地址都是指向同一个路径的。后来仔细去网上搜了下文章,下面这篇文章我觉得把这个情况讲的非常的详细。我这个小菜鸟就不自己写了,相信这篇文章一定能你知道的很清楚。


========================== 华丽分割线 ============================


从Yahoo!关于网站优化的经典14条建议,在V2版中,已经更新到35条了,其中有需要减少请求连接数和减少DNS解析次数,由于在http协议中有对浏览器并发请求连接数的限制,1.1版本中规定了是2个(相关资料可以查看文章的结尾),于是通常的优化网站加载速度的方法是采用多个域名增加浏览器对同一网页的请求并发连接数。

如淘宝网的图片会出现在如下众多域名下:

img01.taobaocdn.com,mg02.taobaocdn.com,img03.taobaocdn.com 。。。

ping一下上述地址,就会发现img01,img03,img04的IP都是:121.14.63.250,说明它们其实都指向了同一台服务器或同一路由服务器。

显然这样的做法与Yahoo!14条或者22条或者35条中的Reduce DNS lookups规则是相违背的,

这需要在提高并发连接数和减少DNS解析之前寻求到一个平衡点,以达到适合自己网站的最快速度。

然而随着家庭宽带带宽的增加,普通用户上网速度的增加,

Yahoo!的14条也变成了新的22条或者35条,

说明在带宽不一样的今天,网站优化的原则也有所改变,

那么各个浏览器包括IE和Firefox是不是仍然严格地遵循着Http协议中关于2个并发连接数的限制呢?

下面就来验证一下看看。

首先来看看Windows XP英文版IE8的并发连接数,

在开始菜单中的运行对话框中输入 regedit 打开注册表编辑器,

依次打开注册表项:[HKEY_CURRRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings],

可以看到MaxConnectionsPerServer和MaxConnectionsPer1_0Server两个选项的值都是10,而不是Http协议中规定的2个!

如图所示:

再看看Firefox的相关配置:

在Firefox地址栏中输入:about:config

然后在配置页面中搜索:max,可以看到network.http.max-connections的值是30,

network.http.max-persistent-connections-per-server的值是6,

也都不是协议所规定的2。

如图所示:

最后我们可以动手来写一个简单的JS函数来验证一下浏览器对同一域名(Server)的并发连接数的限制,

写一个发送Ajax请求的函数,其请求的后台页面做延迟响应,如php中用sleep(3)。

然后写16个调用语句,再写一个发送Ajax请求的语句,这个请求地址的后台页面收到请求后立即返回响应数据,

Demo地址如:http://developer.oncecode.com/comet/

分别测试IE8、Firefox 3.6.8和chrome 5.0,

不难得出结论:

IE8的并发连接数限制为10;

Firefox 3.6.8和chrome 5.0的并发连接数都为6。

Yahoo!关于网站优化的35条建议,参见网址:

http://developer.yahoo.com/performance/rules.html

具体规范见“All”部分。

http协议1.1版本中对浏览器并发请求连接数的2个限制,参见网址:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4

Practical Considerations部分最后一段:

Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值