博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用多域名实现并行下载
阅读量:6428 次
发布时间:2019-06-23

本文共 1262 字,大约阅读时间需要 4 分钟。

网页中包含的资源(图片、js、css、iframe等)引起的http请求基本上都来源于同一个域名,有的网站对静态资源文件使用了独立的无cookie域名。YSlow提倡的高性能网站准则中有一条“reduce DNS lookups”,减少域名数量以便减少域名解析所需要的时间,但是,有的情况下,适当的增加网页中使用的域名数却可以提升网页的速度。

 

首先,我们来看一个例子:

图片下载被阻塞:

在这个例子中,网页包含12张图片,每张图片加载需要4秒钟。

以下是网页加载时的瀑布图:

ie_block

IE6加载时的瀑布图

 

ff_block

Firefox3加载瀑布图

 

 

从上图中可以看到,IE6下,前10张图片是并行下载,后2张要在前10张图片下载完成后才开始下载,Firefox下情况比较类似,只不过图片是每6张一组下载。这是因为浏览器限制了同一个域名下最大并行下载数量(或者说最大连接数),当并行下载数到达上限时,其后的http请求就必须排队等待,除了图片外,css、html等网页资源也存在同样的问题。同一域名的最大并行下载数量与浏览器类型、浏览器版本、HTTP版本有关,以下是网上收集的数据,并未核实。

maxlink

 

 

并行下载是加快网页显示非常关键的一项技术,如何多图片的并行下载呢?我们再来看另外一个例子。

多图片并行下载:

再来看看该网页的瀑布图:

ie_parallel

IE6加载瀑布图

 

ff_parallel

Firefox3加载瀑布图

 

上例中已经实现了多图片的并行下载,网页加载时间从7.9s减少到4s,速度提升了一倍。从源代码中可以看到,图片使用了不同的域名,每个域名连接的图片不超过6张。本例的关键技术就是使用了多域名来区分资源(包括图片、css等)。

IP和域名

“每台服务器的最大连接数”,这里说的服务器是指的URL地址中的域名,而不是服务器的IP地址,所以,同一IP、不同域名会被看成不同的服务器。利用Apache的ServerAlias可以很方便的在同一域名下增加多个别名域名,相应的,在域名解析时只需要添加一个别名的CNAME记录即可。

 

多少个域名合适

在前面的内容中你已经看到了,两个域名比一个域名好,三个域名是否会比两个域名好呢?10个域名呢?YSlow的开发者、Yahoo网页性能专家Steve Souders在他的中指出,从一个域名增加到两个域名,网站性能能够得到提升,当域名大于两个时,会对网页加载时间产生负面影响。这个问题的最终答案是域名的数量与网页资源的数量、体积有关,但是,按着经验来说,两个足以。

如何划分资源

如何给指定的资源分配多域名中的一个域名呢?非常关键的一条原则是保证一个资源在分配时总是分配到固定的一个域名,这样,如果资源已经在浏览器缓存了的话,下次访问时就可以在缓存中读取,避免从其他域名再次下载资源。其中一种方法是,使用哈希函数转换资源的文件名为整数,再根据约定的算法选择域名。

当然,手动指定是最原始但有效的方法。

转载于:https://www.cnblogs.com/wuya16/archive/2013/03/09/2952146.html

你可能感兴趣的文章
12:Web及MySQL服务异常监测案例
查看>>
数据库性能优化之冗余字段的作用
查看>>
DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
查看>>
数据库设计三大范式
查看>>
ionic 字体的导入方法
查看>>
内部类详解
查看>>
类加载机制
查看>>
火柴棒等式(2008年NOIP全国联赛提高组)
查看>>
mongodb int型id 自增
查看>>
Java中的4种代码块
查看>>
Ocelot(七)- 入门
查看>>
生成水杯热气
查看>>
程序员工作心法
查看>>
三个常用的PHP图表类库
查看>>
python中异常处理--raise的使用
查看>>
高中数学与初中数学的接轨点
查看>>
Spring Data Redis—Pub/Sub(附Web项目源码)
查看>>
Linkedin工程师是如何优化他们的Java代码的(转)
查看>>
winfrom 如何保存datagridview中的某一行数据
查看>>
面向领域驱动的应用开发框架Apworks 2.0发布
查看>>