【翻译】性能探索(4)--最大化浏览器的并行下载数量
2010-12-28 23:33
302 查看
并行下载
页面中组件的数量对于最终用户的响应时间影响最大,每一个组件需要一个额外的HTTP请求,我们知道浏览器是并行的发送HTTP请求的,你可能会问,为什么HTTP请求的数量会影响响应时间,浏览器为什么不能一次性把所有需要的东西下载完呢?需要回到HTTP1.1的协议,它建议浏览器每次下载2个组件(一个主机),HTTP的请求是一个阶梯形的,如图1所示
图1
如果一个页面的组件分布的让两个主机进行下载,那么页面的整个响应时间会快2倍,HTTP请求如图2所示,一次下载4个组件(两个主机)。
图2
将每个主机的并行下载数量设置为2是一个基本原则,在默认情况下,ie和ff都遵守这个原则,但是用户可以自己设置这个数量。IE将这个数据存放在注册表中(查看微软帮助),ff可以通过network.http.max-persistent-connections-per-server来设置。
值得一提的是在HTTP/1.0中,FF一个主机的默认并行下载数量是8个,图3显示了如果我们在HTTP/1.0下用FF下载10个图片的情况,虽然只用一个主机,但它比图2(两个主机)显示的都快。
图3
HTTP/1.0 1.1比较
大部分网页下载使用HTTP1.1协议,但是让并行下载的数量大于2个是非常吸引人的,不要指望用户去修改浏览器的设置,前端工程师工程师应该通过CNAME来将需要下载的组件分开给多个主机,最大化并行下载数量是需要一定开支的,取决于带宽和cpu的速度,太多的并行会适得其反影响性能的。
如果将浏览器的最大并行数量设置为2(单主机基于HTTP/1.1)会怎么样,下面继续讨论
如果我们使用CNAME来增加页面并行的数量会怎么样?
这里有两篇关于这个话题的文章(Ryan Breen of Gomez 和Aaron Hopkins over at Google.),我们雅虎的性能团队也做了相关的实验去检测使用多个主机CNAME产生的影响,这个实验检测一个只有20张图片的页面,这些图片在同一个服务器上面,并且被雅虎真实的页面所访问,我们的实验检测了下载页面的时间,图四所示。图4
在我们的实验中,我非别使用的CNAME数量为:1,2,4,5和10,他们对应各自的并行下载数量为2,4,8和10,我们获取20张小图片(36p× 36px)和20个大图片(116 x 61 px)。令我们惊奇的是,当我们下载大图片的时候,4个以上CNAME的使得响应时间变得更长;当我们下载小图片的时候,2个以上的CNAME并没有对响应时间产生很大的影响,总体来说,2个CNAME是最好的。
导致响应时间变慢的一个可能的原因就是当我们增加并行下载数量的时候客户端CPU的占用情况,我们并行系在的图片数量越多,客户端的CPU占用率越高,在我的笔记本上,当并行下载数量为2的时候,CPU的占有率为25%,当并行下载数量为20的时候,CPU的占用率为40%,这些CPU数据在不同的用户机子上肯定是不同的,但是这给了我们一个考虑的因素(当我们通过增加CNAME来最大化并行下载数量时)。
这个结果仅仅适用于那些数据已经在浏览器缓存中的站点,如果时站点在缓存中的数据是空的,那么响应时间会随着CNAE的增加变的更坏,对于那些希望提高用户第一次访问的用户的体验的站点,我们建议不要增加CNAME的数量,对于那些已经有缓存的页面,提高并行下载数量会改进响应时间,具体选择哪一个应该根据实际情况而定。
我们的原则是至少是并行数量为2,但是不要使用多于4个CNAME,最主要的:减少页面中组件的数量。
原文链接
相关推荐
第八期Web标准化交流会.ppt该PPT主要包括四个方面的内容:
无阻塞加载Javascript
利用域名别名增加并行下载数量
避免空路径元素
编码心得
相关文章推荐
- 【翻译】性能探索(3)--Cookies对于浏览器响应时间的影响
- 【翻译】性能探索(2)--浏览器缓存的使用情况
- 关于浏览器并发数的那些事儿——跨主机名并行下载【译】
- 利用 Selenium WebDriver + Grid2 实现并行的浏览器端性能测试
- 浏览器最大连接数、最大并行资源下载数
- 线程数量与并行应用性能相关性的测试
- 【翻译】性能探索(6)--Less is More,组合文件
- 【翻译】性能探索(5)--优化IPhone缓存
- 【翻译】目录---性能探索(1-6)【100%完成】
- 各种浏览器并行下载数
- 利用 Selenium WebDriver + Grid2 实现并行的浏览器端性能测试
- [转翻译]SQL Server 2005 Analysis Services性能指南 Part 3 - 聚合最大化
- 谷歌用并行JavaScript编译提升浏览器性能
- 【翻译】性能探索(1)--关于减少HTTP请求,80-20法则告诉我们什么
- JS在浏览器上的性能分析(一)脚本的下载与运行
- Openstack(G版)并行性能加速(翻译)
- java实时向zip中写excel文件并通过浏览器实现下载
- iis 中已经注册的 MIME 在某些浏览器中提示下载解决办法
- [大牛翻译系列]Hadoop(11)MapReduce 性能调优:诊断一般性能瓶颈
- 前端性能优化——桌面浏览器前端优化策略