浏览器的并发请求数目限制是针对同一域名的。
即同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞,这就是为什么会有img.abcde.com,abcde.com 之类域名的原因。
版本 |
HTTP1.0 |
HTTP1.1 |
IE 6\7 |
4 |
2 |
IE 8 |
6 |
6 |
IE 9 |
10 |
10 |
IE 10 |
6 |
6 |
IE 11 |
6 |
6 |
chrome |
6 |
6 |
firefox |
6 |
6 |
如图,有的请求会持续很长时间,如果把 img,css,js... 都放到 abcde.com 一个域名下面,其他请求就迟迟无法完成,浏览者看来就是『卡住了』。
而把请求放到多个域名下,增加浏览器的并发请求数,比如图片放到 img.abcde.com 域名下。
京东对静态资源的处理,通过以下js代码使得页面上的图片资源来自于不同域名的服务器,就是对以上所说的优化:
var b,a = String(a);
switch (a.match(/(\d)$/)[1] % 5) {
case 0:
b = 10;
break;
case 1:
b = 11;
break;
case 2:
b = 12;
break;
case 3:
b = 13;
break;
case 4:
b = 14;
break;
default:
b = 10;
}
return "http://img{0}.360buyimg.com/".replace("{0}",b);
为什么要这么做?
1、图片服务器做集群;
如果一个挂了,其他还可以使用;
2、多个域名请求到一个服务器?
a)浏览器针对同一个域名并发数限制;
b)使用多个域名,加快资源下载;
c)注意:并不是域名越多加载越快? DNS解析就越多