如图,用firebug分析网页,发现连接处有很多阻挡,而且时间很长,在firebug的官方wiki中找到了 “阻挡” 的解释(内容来自http://getfirebug.com/wiki/index.php/Main_Page):
Request Timeline
Every request-response round trip is shown as horizontal bar in the Timeline and is composed of several phases, represented by different colors. Hovering a Request Timeline offers more detailed information about the timings of the different phases.
Value | Display | Description |
---|---|---|
Blocking | Time spent in a browser queue waiting for a network connection (formerly called Queueing) For SSL connections this includes the SSL Handshake and the validation step. | |
DNS Lookup | DNS resolution time | |
Connecting | Elapsed time required to create a TCP connection | |
Sending | Sending request headers | |
Waiting | Waiting for a response from the server | |
Receiving | / (from cache) | Time required to read the entire response from the server (and/or time required to read from cache) |
'DOMContentLoaded' (event) | (blue line) | Point in time when DOMContentLoaded event was fired (since the beginning of the request, can be negative if the request has been started after the event) |
'load' (event) | (red line) | Point in time when the page load event was fired (since the beginning of the request, can be negative if the request has been started after the event) |
'MozAfterPaint' (event) | (green line) | Point in time when a event was fired (since the beginning of the request, can be negative if the request has been started after the event) |
Time stamp | (olive line) | Time stamp created via |
第一个 Blocking 翻译成中文解释为:
所花费的时间在浏览器中队列(前称为排队等待网络连接)SSL连接的,这包括SSL握手和OCSP验证步骤。
即队列等待时间。
浏览器的队列等待时间与浏览器的并发数有关,常见浏览器的并发数如下:
浏览器 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 ? Chrome 3 4 4 Opera 9.63,10.00alpha 4 4
例如Firefox3 对于一个主机(同一主机域名),一次性只能处理6个请求,而多余的请求则处于队列当中。
为了提高反问速度可以给网站家更多的域名,如京东就是采用更多的域名来提高并发引用:http://hi.baidu.com/thinkinginlamp/blog/item/e6409313f6ae1c866438db4c.html
作者:老王 这是个老话题了,先总结一下HTTP1.1下主流浏览器在单个主机下的并发连接数: IE7 2 IE8 6 Firefox2 2 Firefox3 6 看上去巧合的是:老版本的IE和Firefox都使用较低的单个主机并发连接数(2),而新版本的IE和Firefox都使用较高的单个主机并发连接数(6)。说起来老版本的IE和Firefox之所以采用较低的单个主机并发连接数是有道理的,在 里明确要求了单个主机并发连接数的数目: Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion. 不过标准总会落后于现实。在当今的网络环境里再使用较低的单个主机并发连接数已经越来越显得不合时宜了,所以说新版本的IE和Firefox才会不约而同的采用较高的单个主机并发连接数。 不过很多时候我们为了效率还想得到更高的并发连接数,比如说我们总会看到一些大网站采用独立域名或者二级域名来设置专门的图片服务器,其实有一部分原因就是为了增加并发连接数。至于使用独立域名还是二级域名的差别在于Cookie的影响,当使用和主站根域名相同的二级域名时,请求的同时也会捎带着传递主站根域名的Cookie,而使用和主站根域名不同的独立域名时,则不会受主站根域名Cookie的影响,所以带宽占用会更小一些。 不过也不是说并发连接数越大越好,假如新版浏览器得到普及,即使你的网站的平均流量还维持在和以前一样的水平,那么峰值流量也会成倍增加。 顺便说说Firefox下怎么调整单个主机下的并发数: # about:config network.http.max-connections : 30 network.http.max-connections-per-server : 15 network.http.max-persistent-connections-per-proxy : 8 network.http.max-persistent-connections-per-server: 6 需要说明的是HTTP1.1下以network.http.max-persistent-connections-per-server的指为准,这是因为HTTP1.1下缺省都是持久连接,反之如果是HTTP1.0,则以network.http.max-connections-per-server为准。 如果你使用TamperData检测一下,就能发现: HTTP1.1下Connection: Keep-Alive HTTP1.0下Connection: Close |