【转】使用多域名实现资源并行下载
来源:互联网 发布:全民飞机巅峰飞跃算法 编辑:程序博客网 时间:2024/05/01 07:46
首先,我们来看一个例子:
图片下载被阻塞:
在这个例子中,网页包含12张图片,每张图片加载需要4秒钟。
以下是网页加载时的瀑布图:
IE6加载时的瀑布图
Firefox3加载瀑布图
从上图中可以看到,IE6下,前10张图片是并行下载,后2张要在前10张图片下载完成后才开始下载,Firefox下情况比较类似,只不过图片是每6张一组下载。这是因为浏览器限制了同一个域名下最大并行下载数量(或者说最大连接数),当并行下载数到达上限时,其后的http请求就必须排队等待,除了图片外,css、html等网页资源也存在同样的问题。同一域名的最大并行下载数量与浏览器类型、浏览器版本、HTTP版本有关,以下是网上收集的数据,并未核实。
并行下载是加快网页显示非常关键的一项技术,如何多图片的并行下载呢?我们再来看另外一个例子。
多图片并行下载:
再来看看该网页的瀑布图:
IE6加载瀑布图
Firefox3加载瀑布图
上例中已经实现了多图片的并行下载,网页加载时间从7.9s减少到4s,速度提升了一倍。从源代码中可以看到,图片使用了不同的域名,每个域名连接的图片不超过6张。本例的关键技术就是使用了多域名来区分资源(包括图片、css等)。
IP和域名
“每台服务器的最大连接数”,这里说的服务器是指的URL地址中的域名,而不是服务器的IP地址,所以,同一IP、不同域名会被看成不同的服务器。利用Apache的ServerAlias可以很方便的在同一域名下增加多个别名域名,相应的,在域名解析时只需要添加一个别名的CNAME记录即可。
多少个域名合适
在前面的内容中你已经看到了,两个域名比一个域名好,三个域名是否会比两个域名好呢?10个域名呢?YSlow的开发者、Yahoo网页性能专家Steve Souders在他的中指出,从一个域名增加到两个域名,网站性能能够得到提升,当域名大于两个时,会对网页加载时间产生负面影响。这个问题的最终答案是域名的数量与网页资源的数量、体积有关,但是,按着经验来说,两个足以。
如何划分资源
如何给指定的资源分配多域名中的一个域名呢?非常关键的一条原则是保证一个资源在分配时总是分配到固定的一个域名,这样,如果资源已经在浏览器缓存了的话,下次访问时就可以在缓存中读取,避免从其他域名再次下载资源。其中一种方法是,使用哈希函数转换资源的文件名为整数,再根据约定的算法选择域名。
当然,手动指定是最原始但有效的方法。
- 【转】使用多域名实现资源并行下载
- 浏览器并行下载资源个数
- 多客户端实现文件从服务器端下载文件--并行下载
- 为什么利用多个域名来提供网站资源更有效?浏览器同一时间可以从一个域名下载多少资源?
- 使用Tensorflow实现多GPU并行训练
- python: gevent轻松实现并行下载多个文件
- R安装并行计算工具包snowfall实现并行运算资源
- nginx使用include实现多域名访问
- java实现资源下载
- 使用github下载资源
- 一些使用资源下载
- IE和Chrome可以并行下载多少个资源?
- PHP使用QPM实现多进程并行任务处理程序
- PHP 使用 QPM 实现多进程并行任务处理程序
- Python中使用多进程来实现并行处理
- 使用IIS实现域名跳转
- php实现下载图片资源
- 使用HttpModule实现多个域名分别“绑定”到子目录
- 基于 HTTP 长连接的“服务器推”技术
- Android ListView中的Button屏蔽onItemClick事件解决办法
- 云计算管理三利器:Nagios、Ganglia和Splunk
- 作业、进程、线程
- 大数乘法
- 【转】使用多域名实现资源并行下载
- 多线程程序占用CPU过多的问题
- rcp(插件开发)如何打开编辑器、视图、透视图
- js:字符串(string)转json .
- Windows Server 2003安装配置IIS
- 时间差TimeSpan用法
- sharepoint 2007 open with windows exporer 显示http的方式,而不是\\的方式
- 2012 BI发展趋势预测
- 体验C语言内存操作的魅力之范型