2.3优化并行下载
浏览器在打开一个网页时,浏览器要先下载网页本身,也就是HTML,然后分析这些HTML标记,同时逐步下载其中包含的一些组件。然而,浏览器下载组件的过程受到最大并发数的限制。HTTP1.1协议推荐了浏览器限制并发数为2。这是根据当时的网络条件所推荐。大多数的浏览器默认使用了这个限制,尽管允许用户取消这个限制,但是对于大多数用户而言,并不会去修改这一设置,其结果是,网页的加载速度比较慢。也就是说,浏览器对组件并发下载的默认限制导致了网页加载速度较慢。
| 浏览器 | HTTP/1.1 | HTTP/1.0 |
| IE 6, 7 | 2 | 4 |
| IE 8 | 6 | 6 |
| Firefox 2 | 2 | 8 |
| Firefox 3 | 6 | 6 |
| Safari 3,4 | 4 | 4 |
| Chrome 1,2 | 6 | - |
| Opera 9.63, 10.00alpha | 4 | 4 |
可以利用不同的域名“欺骗”浏览器,增加并发数。当浏览器在区分同时存在的下载进程时,是以域名来判断的,而不是IP地址,因此可以对一个网页的组件使用多个域名(或子域名),把将这些组件分别放在这些不同的域名下。从而欺骗浏览器,让浏览器认为这些下载的组件是存在于不同的域,而允许同时存在,绕过了限制。因此即时是同一个物理服务器,不同的域名也可以增加并发数量
一个好的方式是将网页的组件按类型放在不同的域名(或子域名)下。
但是需要注意域名解析会带来额外的开销。
2.4分离页面组件
不同的组件在生成、传送中有不同的要求,为了给不同类型的Web组件采取有针对性地措施,可以将这些Web组件分别进行独立的部署(即可位于不同的物理服务器,也可以位于同一个物理服务器上的不同逻辑单元中),并将不同的域名指向不同的Web组件服务器。

动态内容
动态内容包括了一切需要动态脚本在运行时创建的内容,比如动态生成的HTMl网页、动态生成的图片、动态生成的XML数据等。因此在生成这些内容的过程中需要大量的CPU计算,内存占用,通常还要与数据库连接。
优化方法:
- 使用动态内容缓存
- 较快的CPU、较大的内存、高速连接数据库……
静态页面
静态页面也就是存储在服务器磁盘上的HTML文档,这和其他静态内容一样,都不需要动态脚本解释器的参与,所以节省了一定的CPU和内存开销。但是需要经常从磁盘中读取数据,进行网络传输。
优化方法:
- I/O密集型应用
- 高速磁盘、 RAID、足够的带宽
图片
图片是站点中使用最多的组件之一,其尺寸可能从几十个字节到几百KB。一个网页中常常会包含很多张图片,几百个图片的网页并不罕见。对于庞大数量的图片的HTTP请求,如果每次都要从建立TCP连接开始到关闭TCP连接将是对资源的浪费,通过HTTP持久性连接可以提高图片的传送速度。
图片的特点是数量较大
优化方法:
- HTTP持久性连接
样式表
样式表的更新并不频繁
优化方法:
- 缓存
当样式表在过期前需要更新,则只要在引用样式表时,让样式表的地址发生变化即可
- <link href = “http://css.xxx.com/styles.css?v =1.2” rel = “stylesheet” type = “text/css” >
脚本
优化方法:
- 浏览器缓存
视频
优化方法:
- 较大服务器的带宽
2.5 组件压缩
从HTTP1.1开始,Web客户端可以通过HTTP请求中的Accept-Encoding头来表示对压缩的支持
- Accept-Encoding: gzip, deflate
如果Web服务器看到请求中有这个头,就会使用客户端列出来的方法中的一种来压缩响应。Web服务器通过Content-Encodeing头来通知Web客户端
- Content-Encodeing: gzip
适合压缩的对象:
- HTML文档、脚本、CSS…..
- 图片和PDF文件不适合压缩
压缩的代价:
- 服务器额外的CPU资源
- 客户端解压缩





