`

【转】优化页面加载时间,有关浏览器本身并发的控制(Pipelining).

 
阅读更多
原文地址:http://www.php-oa.com/2008/03/07/ie-load.html

当前浏览器默认并发连接数

下面表格列出了当前浏览器在HTTP/1.1和HTTP/1.0协议下默认的并发连接数设置:
Browser 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
Chrome 4 6 ?
iPhone 2 4 ?
iPhone 3 6 ?
iPhone 4 4 ?
Opera 9.63,10.00alpha 4 4
Opera 10.51 8 ?

上面同时提供了HTTP/1.0协议下的浏览器并发连接数,主要是因为在早期,某些浏览器在HTTP/1.0协议和HTTP/1.1协议下默认设置的并发连接数不同,IE7在HTTP/1.0协议下支持4连接数,而在HTTP/1.1协议下仅支持2连接数。为了加快并行下载从而优化Web性能,AOL当时就降级使用HTTP/1.0协议从而提高了并行连接数。

浏览器的默认并发连接数是可以修改的,针对IE可以通过修改注册表来实现,相应的,Firefox的修改更容易和安全些,在地址栏输入:about:config,找到

    network.http.max-persistent-connections-per-server
    network.http.max-connections-per-server

分别进行相应的修改即可。

注意:IE8针对拨号上网用户自动减少到2个连接数。

对于开发者,可以通过Javascript来探测浏览器当前生效的连接数:

    window.maxConnectionsPerServer
    window.maxConnectionsPer1_0Server

这些属性都是只读的。
浏览器打开的连接数上限

浏览器最多能同时打开多少连接数?

这与我们为增加并行连接数的浏览器所做的直至浏览器失效的设置有关。

作者进行了一翻测试论证(由于年代久远,演示已不可用),他做了一个测试页面,包含180张图片,这些图片分别保存在30个不同的主机名下,每个主机名下放置6张图片。为了得出浏览器支持的同时打开的连接数的上限值,他打开该页面,通过抓包工具计算同时请求数。结果发现,Firefox1.5和2.0能够同时打开的最大连接数是24个(解析12个主机名,每个主机名保持2个连接数),这个限制是通过Firefox的netword.http.max-connections设置的,默认值是24。

针对IE6、7&8并未得出这个上限值,在2连接数下,IE6&7同时打开了60个连接,在6连接数下,IE8同时打开了180个连接。说明作者测试用的30个主机名还要增加才能测试出何时IE超出最大连接数。



谈到浏览器的并发Pipelining,就一谈要讲到HTTP的连接方式.我们知道HTTP/1.0 的运作模式是由客户端与服务器端的三次握手的连接过程, 在你来我往中建立连接,但完事后是需要发回网络包来关闭建立的TCP连接.

   那么这里会有个效率问题: 一个页面有很多小数据元素时,或者 页面元素很多时, 这建立与关闭的网络包将充斥在你的网络中, 这无疑会影响页面载入的速度. 那么在改良版(HTTP/1.1)终于提出了个持久连接(persistent connection)的概念, 简单而形象的描述就是一个绳(一个HTTP连接)上拴多个蚱蜢(多个请求), 在服务器端发送回响后并不马上关闭连接, 好处当然是连接数少了,但维持连接对服务器端来说是需要消耗资源的,所以我们在配置Apache部分时可以酌情修改自己的KeepAlive Timeout.

    那么这里又会有个问题,如果前一个请求没完,后一个就肯定是在等待状态了,那么持久连接就是个等待状态的连接,而不是把时间花在数据的发送/接受上了.所以有时打开网页的速度和你和网络,服务器的压力,网络之外,还有一个原因,就是浏览器本身的并发.

开启Pipelining的话,它可以在持久连接上再次提速, 即浏览器在一个持久连接里一次给服务器端发送多个请求,而如果有缓存的话服务器端回个304就可告之浏览器此数据无更改,即可呈现给用户.

默认状态IE每个主机名只允许两次请求状态,IE 同时只能从同一域名下载两个文件的限制。如果超过两个文件,IE 将会以队列形式等待两个文件下载完毕,再去下载接下来的两个文件。这样,当在一个页面显示多张图片时,IE 用户的图片下载速度就会受到影响。

HTTP pipelining, 默认IE是关闭的,Mozilla firefox 中已经内置这一技术并打开了,你要查看你的Firefox是否打开,可以用下面的方法.

在地址栏中输入:about:config

在Filter栏中输入:pipe

在下面窗口中出现了以下项目:network.http.pipelining

双击这一行,则其 Value 变成了 True。

下面还有 network.http.proxy.pipelining,也可以改为 True。

至于 Maxrequest,最大请求数,则可以保留原来的 4,太多了也不太好。

你可以使用多个主机名来突破这个HTTP规范.举个例子: host[1-5].example.net的服务器访问地址, 同样的数据内容呈现.例如百度、新浪、雅虎等网站采用了同一组图片服务器,使用多个二级域名的方式来解决这个问题。

百度的图片搜索采用了 t1.baidu.com ~ t8.baidu.com 八个域名来显示图片,消耗在 IE 浏览器端的 Blocked 时间小于0.001秒.新浪的图片 CDN 同样采用了 i0.sinaimg.cn ~ i3.sinaimg.cn 四个域名来显示图片.新浪采用独立的顶级域名 sinaimg.cn 而非 ***.sina.com.cn 域名作为图片服务器域名,还有一个好处,就是 sina.com.cn 域下的 Cookie 信息不会被带到 sinaimg.cn 域下,提高了图片服务器解析 header 头的速度。
分享到:
评论

相关推荐

    计算机组成教学课件:Chapter6 Pipelining.ppt

    计算机组成教学课件:Chapter6 Pipelining.ppt

    计算机组成与结构体系英文课件:Chapter 6 – Pipelining.ppt

    Chapter 6 of the "Computer Organization & Architecture" course delves into the topic of pipelining, a crucial technique for enhancing the performance of computer systems. The lecture covers several ...

    计算机组成与结构体系英文课件:Chapter6 Pipelining.pdf

    为了缓解这个问题,可以采用预取(Prefetching)技术,预测并提前加载即将需要的数据,或者使用高速缓存(Cache)来存储频繁访问的数据,减少内存访问的时间。 6.6 分支延迟 分支指令会改变程序的执行路径,因此...

    Firefox浏览器的启动速度优化

    Firefox浏览器是一款广受欢迎的开源网页浏览器,以其高度的可定制性和强大的安全性著称。然而,随着用户打开的标签页数量增加,浏览器的启动速度和内存占用可能会变得缓慢。以下是一些针对Firefox启动速度优化的技巧...

    Pipelining.rar_DSP编程_Visual_C++_

    本教程“Pipelining.rar_DSP编程_Visual_C++_”旨在帮助开发者掌握如何使用Visual C++进行DSP编程,并利用流水线(Pipelining)技术优化性能。以下是对这一主题的深入探讨: 1. **DSP编程基础**:DSP编程涉及到对...

    firefox优化文档

    此外,可以通过创建一个新的整数参数来优化页面初始渲染的时间。在Firefox的任何位置右键点击,选择“新建”->“整数”,在弹出的对话框中输入“nglayout.initialpaint.delay”,然后将其值设为“0”。这样做意味着...

    Ajaxifying, Caching and Pipelining Facebook Website

    Facebook在其网站上采用了一系列优化技术,包括Ajaxifying、Caching和Pipelining,以提升用户体验,尤其是网页加载速度。这些技术对于一个拥有5亿用户的大型社交平台来说至关重要,因为网站速度直接影响到用户的参与...

    加快火狐的启动速度和运行速度

    这样可以减少页面首次渲染的时间延迟,使得页面加载更加迅速。 3. **优化最小化操作** - 启用`config.trim_on_minimize`选项,并将其值设为`true`。这会使得Firefox在最小化时自动释放内存资源,从而减小系统负担...

    Firefox加速设置

    此设置控制了浏览器处理DOM元素的最大时间,超过该时间后会暂停处理以响应其他操作,如用户输入等。 7. **content.notify.interval**: 设置为`750000`(单位:毫秒)。此选项定义了浏览器在渲染过程中检查是否有新...

    firefox火狐浏览器 优化方法+常用扩展(插件)

    最后一步就是在Firefox再次输入“about:config”,在页面任何一个地方点右键,选择“New”—“Integer”在弹出的对话框中输入“nglayout.initialpaint.delay”并将其值改为“0”,表示当浏览器收到网站回复的信息后...

    家庭网关中FPGA功耗优化设计.pdf

    本文探讨了在不降低性能的前提下,采用插入流水线(Pipelining)、优化时钟树以及减少逻辑翻转率等方法来实现FPGA功耗的优化设计。 1. FPGA在家庭网关中的角色与功耗问题 家庭网关是一个智能化的接口,旨在将家庭...

    lc3-pipelining

    流水线(Pipelining)是计算机体系结构中的一个重要概念,旨在通过并行处理技术来提高指令执行效率。对于 LC3(Little Computer 3)这样基于单总线架构的精简指令集计算机(RISC),采用流水线设计可以显著提升其...

    火狐浏览器启动加速

    这将减少浏览器的启动时间和提高浏览器的启动速度。 设置 8:让火狐快速对网站回复信息反应 点右键,选择 “新建”—“整数”在弹出的对话框中输入 nglayout.initialpaint.delay 并将其值改为“0”。这将让火狐...

    DB - Unbounded Pipelining in Dynamically Paxos Clusters.pdf

    DB - Unbounded Pipelining in Dynamically Reconfigurable Paxos Clusters.pdf Consensus is an essential ingredient of a faulttolerant distributed system systems. When equipped with a consensus ...

    Ansible的配置优化指南.docx

    控制连接的持续时间为 5 天,这将使得连接在一段时间内保持活跃。同时,可以在客户端的 `ssh_config` 文件中设置 `ServerAliveInterval` 和 `ServerAliveCountMax` 参数,以确保连接不会因无响应而中断。 2. 开启 ...

    线性汇编优化代码PPT学习教案.pptx

    软件流水(Software Pipelining)是一种模仿硬件流水线的技术,通过将循环内的不同任务分解到不同的阶段,实现并发执行,提升效率。在外部循环和内部循环的配合下,可以更有效地利用处理器资源。 通用目标文件格式...

    [总结]Linux 基本优化指南

    ### Linux基本优化指南 #### 一、概述 在IT领域,Linux因其稳定性和安全性而备受推崇,成为服务器操作系统中的首选之一。然而,即使是这样优秀的操作系统,也需要适当的优化才能发挥其最大效能。本文将从系统配置...

Global site tag (gtag.js) - Google Analytics