IE、Firefox对同一域名访问并发限制,及解决优化方案
这个问题很少人会注意到,前几天公司产品库项目图片切换到 CDN 存储,我发现了这个问题,由于一个页面上的图片太多,而图片的域名只有一个,导致有的图片加载要几十秒。
一、问题(如下图)
这还是在比较乐观的情况下,有几秒加载完毕的,按道理来说,图片都不大,应该都在1秒范围内就才是在接收范围内。当然和用户自身的带宽也有关系,但是从我的观察来看,是分批加载的。
于是乎我查看资料,发现。
从Yahoo关于网站优化的经典14条建议,在V2版中,已经更新到35条了,其中有需要减少请求连接数和减少DNS解析次数,由于在http协议中有对浏览器并发请求连接数的限制,1.1版本中规定了是2个(相关资料可以查看文章的结尾),于是通常的优化网站加载速度的方法是采用多个域名增加浏览器对同一网页的请求并发连接数。
二、下面我来看看各大电商是怎么处理的。
1.京东(www.jd.com)
京东图片域名一直是老域名360buyimg.com。
http://img13.360buyimg.com/da/jfs/t1879/131/2924301202/126044/7c7cbf5c/56f3b58fN37c1340a.jpg
比如说这张图片,你可以复制打开这个链接,把前面的二级域名的Img13换成img11、img12、img13等,发现都是可以打开的,而且一般是同一IP,有的同学说换成img8、img1、img2等打不开,这个是策略问题。这只是举个栗子。
2.天猫(www.tmall.com)
图片CDN域名有很多,tbcdn.cn、alicdn.com 等
也是同理,不过最近HTTPS转变后都换成img.alicdn.com了。原因不明。
三、说一下Firefox浏览器
在Firefox
地址栏中输入:about:config
在搜索项输入:network.http.max-connections
老版本值是30,我这个版本是256,说明有改进。
我们再输入:network.http.max-persistent-connections-per-server
进行搜索,发现是6。
你可以写个Demo测试一下,写个小循环,然后访问同一个域名(推荐用 Ajax 方式),然后后台sleep
一会,你就能看出效果。之前有人做过低版本的测试,得出结论。
IE8的并发连接数限制为10;
Firefox 和 chrome 的并发连接数都为6,可能各个版本有区别。作为一个站长,或者说一个完善的产品,这个是不得不考虑的。
解决方案:
1.给定一组域名,如:img1.baidu.com、img2.baidu.com、img3.baidu.com、img4.baidu.com... ...
2.这组域名指向同一个源,或者说最终源是一个。
3.上传图片(静态文件)的时候随机返回这组域名中的其中一个即可,这样图片的访问域名就不会出现只是一个域名了。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/98.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。