`
frenchmay
  • 浏览: 231328 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HTTP管线化和持久化连接

阅读更多

原文出处 http://www.sanotes.net/html/y2008/205.html

 

来自Laurence:浏览器pipeline

 

IE, Firefox, Safari ship浏览器默认状态下并不激活http管线化的功能;Opera是据作者所知唯一默认状态下激活http管线化的浏览器.不采用管道化意味着每次请求必须被应答之后,它的连接才能空闲以便发送下一次请求.这样会导致平均每个连接带来额外的延迟.或者如果你的服务器不支持http长连接,进行其他的tcp三次握手增加了额外的请求往返,双倍延迟.

来自wikipedia:HTTP Pipeline

 

http管线化是一项实现了多个http请求不需要等待相应的应答就能够写进同一个socket的技术.仅有http1.1规范支持http管线化,1.0并不支持.

采用管线化的请求会对页面载入时间产生动态的提高.尤其是当通过高延迟的网络,例如通过卫星网络连接.

即使通常情况下,可以通过同一个tcp数据包发送多个http请求,http管线化向网络上发送更少的tcp数据包,以便减轻网络负载.

 

只有幂等的请求能够被管线化,例如get和head请求.post请求不应该被管线化.新建立连接上的请求因为无法判断源服务器(代理服务器)是否支持http1.1协议,也不应该被管线化处理.所以,仅在重用已经成功建立的持久化连接的情况下,才可以使用管线化.

 

http管线化需要客户端和服务器双方都能够支持.http1.1规定服务器必须支持管线化.但并未提及服务器必须管线化响应信息,但是如果一旦客户端选择管线化的通信方式,服务器必须能够支持和受理.

来自wikepedia:HTTP Persistence Connection

http持久化连接也称http长连接或者http连接复用,思想是使用同一个tcp连接去发送和接收多个http请求/响应,以便避免为每次单独的请求/应答建立新的连接.

 

优势

减少cpu和内存占用(因为同一时间,启用更少的连接)

减轻网络堵塞(建立更少的连接)

减轻后续请求的延迟(因为避免建立新连接而减频繁的握手)

不需要牺牲当前的tcp连接, 就能够报告错误.

根据RFC 2616 (page 47),一个单用户客户端对于任何一台服务器或者代理服务器都可以维护不多于两个的连接数.

在由当前由n台服务器组成的网络中, 任意一台代理服务器对另外的服务器或者代理服务器应该维护2*n个连接.

这些指南目的在于提升http响应性能,避免网络堵塞.

Reference:
http://www.mozilla.org/projects/netlib/http/pipelining-faq.html
http://en.wikipedia.org/wiki/HTTP_pipelining
http://en.wikipedia.org/wiki/HTTP_persistent_connection

分享到:
评论
1 楼 frenchmay 2009-02-11  
据说新的servlet标准已经支持http长连接了。

相关推荐

    输油管线仪表自动化技术的难点及发展趋势.pdf

    石油化工企业应进一步完善石油天然气的生产配合工作,逐步建立智能化的自动化仪表控制系统,强化自动化仪表的控制技术和数据统计技术,促进输油管线自动化仪表各项功能的健康、持久、稳定发展。此外,企业还需定期对...

    http1.1与http1.0区别

    HTTP 1.1在继承HTTP 1.0优点的基础上,针对其性能问题进行了重大改进,特别是在持久连接、管线化请求和请求头/响应头扩展等方面。这些改进极大地提高了网络通信的效率,同时也增强了HTTP协议的功能性和灵活性,使其...

    29-HTTP1:HTTP性能优化_For_vip_user_0011

    4. **HTTP管线化**:尽管HTTP/1.1引入了持久连接,但仍然存在串行化的问题,即浏览器必须等待一个请求完全响应后才能发送下一个请求。HTTP管线化尝试解决这个问题,允许浏览器同时发送多个请求,但在实际应用中,...

    Http1.1 RFC2096

    HTTP 1.1 RFC2096 是互联网标准组织IETF发布...总结来说,HTTP/1.1 RFC2096是HTTP协议的增强版本,它通过持久连接、管线化和其他优化提升了Web应用的性能,同时也定义了请求和响应的结构,确保了不同系统间的互操作性。

    HTTP 1.1与HTTP 1.0的比较

    - **管线化**(Pipelining):HTTP 1.1允许客户端在没有接收到前一个响应之前就发出后续请求。这可以减少总的整体延迟时间,因为服务器不必等待所有请求都被接收就开始处理。 - **错误状态码**:HTTP 1.1定义了更多...

    http协议详解.ppt

    6. **管线化**:在持久连接的基础上,客户端可以同时发送多个请求而无需等待每个请求的响应,提高了效率。 7. **分块传输编码**:对于大文件或不确定大小的数据,可以采用分块传输编码,逐块发送,允许服务器在生成...

    2017-2020-Android.pdf

    - **HTTP/1.1**: 是HTTP/1.0的改进版本,发布于1999年,增加了许多新特性,比如持久连接和管线化等,使得网络通信更加高效。 **主要区别:** 1. **缓存处理**: - HTTP/1.0中,缓存处理比较简单,主要依赖于`...

    http协议.pptx

    - **HTTP/1.1**:默认启用持久连接,支持管线化请求,即在单个连接上同时发送多个请求,减少了建立和断开连接的开销,提高了效率。 #### HTTP协议工作原理 HTTP协议工作流程主要包括以下步骤: 1. **建立连接**:...

    http权威指南-http入门手册

    HTTP/1.1进一步优化,允许在一个TCP连接上处理多个请求,称为管线化。HTTP/2则引入了二进制分帧、多路复用等技术,显著提升了性能和效率。 Web服务器是HTTP协议的重要参与者。常见的Web服务器有Apache、Nginx等,...

    http1.1中文手册

    10. **管线化**(Pipelining):客户端可以在一个连接上连续发送多个请求,而无需等待每个响应返回,提升了性能。尽管在某些网络环境中可能存在问题,但仍然是HTTP/1.1的一个重要改进。 HTTP/1.1的规范由网络工作组...

    亮白风格-图解HTTP常见面试题-小林coding-v2.0

    为了优化效率,HTTP/1.1引入了持久连接(persistent connection)和管线化(pipelining)的概念。 HTTP与HTTPS的主要区别在于安全性。HTTPS是HTTP的安全版本,它在HTTP的基础上通过SSL/TLS协议提供了数据加密、身份...

    分布式系统架构设计思路

    另外,HTTP 1.1引入了持久连接和管线化请求,这进一步提高了HTTP协议的效率。 在分布式系统中,后端服务需要能够处理大量的并发连接。因此,对服务器和应用进行优化是至关重要的。这包括但不限于网络配置优化、代码...

    http/1.1协议2014年最新版

    此外,还有一种叫做管线化(pipelining)的技术,它允许客户端发送多个请求而无需等待每个请求的响应。 HTTP/1.1协议还包括了一系列的内容协商机制,客户端可以与服务器协商内容的类型、语言、编码以及其它相关特性。...

    超文本传输协议超文本传输协议

    HTTP/1.1还引入了管线化技术,允许在一个连接上同时发送多个请求,提高了交互速度。 HTTP的消息结构包括请求和响应两部分,它们都是由报头和消息体组成的。请求消息包含一个请求行(包括方法、URL和HTTP版本)、一...

    http协议详解doc

    - **HTTP/1.1**:1997年发布,进一步完善了HTTP/1.0的功能,并引入了持久连接、管线化等特性。目前大部分Web服务仍在使用HTTP/1.1。 - **HTTP/2**:2015年标准化,采用二进制格式,支持多路复用、头部压缩等新技术。...

    中文完整版 HTTP协议1 1 pdf

    管线化是HTTP/1.1中引入的一个重要特性,它允许客户端在收到服务器的响应之前连续发送多个请求。这种方式使得客户端无需等待前一个请求的响应即可发出下一个请求,从而进一步提升了性能。 #### 3. 缓存处理 为了...

    HTTP协议中文翻译正确版

    3. **管线化请求**:客户端可以连续发送多个请求而无需等待服务器响应,这样可以在一个TCP连接中发送多个请求,提高并发处理能力。 4. **错误码规范化**:定义了一系列的标准错误代码来表示不同类型的错误,便于...

    TCP-IP详解卷三:TCP事务协议,HTTP, NNTP和UNIX域协议.rar

    HTTP/1.1版本引入了持久连接和管线化技术,提高了性能。而HTTP/2进一步优化了协议,采用二进制分帧,支持多路复用,降低了延迟。HTTP不仅用于Web浏览,也是RESTful API设计的基础,广泛应用于各种分布式系统中。 ...

Global site tag (gtag.js) - Google Analytics