IE浏览器下同一网页多图片显示的瓶颈与优化
Internet Explorer 浏览器在同一时刻只能从同一域名下载两个文件。
至于原因请见 MSDN Blogs:《Internet Explorer and Connection Limits》,如何解除限制请见微软客户帮助与支持主页:《如何将 Internet Explorer 配置为可以同时进行两个以上的下载会话》。
不管 Firefox 有多火,无可否认,IE 仍然是浏览器市场的老大。所以,在做系统架构时,不得不去考虑 IE 同时只能从同一域名下载两个文件的限制。如果超过两个文件,IE 将会以队列形式等待两个文件下载完毕,再去下载接下来的两个文件。这样,当在一个页面显示多张图片时,IE 用户的图片下载速度就会受到影响。
百度、新浪、雅虎等网站采用了同一组图片服务器,使用多个二级域名的方式来解决这个问题。
通过 HttpWatch Professional 5.2.17 分析可以看出,百度的图片搜索采用了 t1.baidu.com ~ t8.baidu.com 八个域名来显示图片,消耗在 IE 浏览器端的 Blocked 时间小于0.001秒,非常快。
新浪的图片 CDN 同样采用了 i0.sinaimg.cn ~ i3.sinaimg.cn 四个域名来显示图片,消耗在 IE 浏览器端的 Blocked 时间也是0.001秒。新浪采用独立的顶级域名 sinaimg.cn 而非 ***.sina.com.cn 域名作为图片服务器域名,还有一个好处,就是 sina.com.cn 域下的 Cookie 信息不会被带到 sinaimg.cn 域下,提高了图片服务器解析 header 头的速度。
再看网易相册的一组图片服务器,只使用 pics.photo.163.com 一个域名,消耗在 IE 浏览器端的 Blocked 时间为0.647秒,就比较慢了。