HTTP/HTTPS |
---|
版本 |
请求方法 |
頭欄位 |
报文主体 |
狀態碼 |
相关主题 |
HTTP持久连接(英语:HTTP persistent connection,也称作HTTP keep-alive或HTTP connection reuse)是使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。
操作
在HTTP 1.0中,没有官方的keepalive操作。通常是在现有协议上添加一个指数。如果浏览器支持keep-alive,它会在请求的包头中添加:
Connection: Keep-Alive
然后当服务器收到请求,作出回应的时候,它也添加一个头在响应中:
Connection: Keep-Alive
这样做,连接就不会中断,而是保持连接。当客户端发送另一个请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。
在HTTP 1.1中所有的连接默认都是持续连接,除非特殊声明不支持。[1]HTTP持久连接不使用独立的keepalive信息,而是仅仅允许多个请求使用单个连接。然而,Apache 2.0 httpd的默认连接过期时间[2]仅有15秒[3],Apache 2.2仅有5秒。[4]短的过期时间的优点是能够快速的传输多个web页组件,而不会绑定多个服务器进程或线程太长时间。[5]
优势
根据RFC 2616 (47页),用户客户端与任何服务器和代理服务器之间不应该维持超过2个链接。代理服务器应该最多使用2×N个持久连接到其他服务器或代理服务器,其中N是同时活跃的用户数。这个指引旨在提高HTTP响应时间并避免阻塞。
劣势
对于现在的广泛普及的宽带连接来说,Keep-Alive也许并不像以前一样有用。web服务器会保持连接若干秒(Apache中默认15秒),这与提高的性能相比也许会影响性能。
对于单个文件被不断请求的服务(例如图片存放网站),Keep-Alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。
Web浏览器中的使用
网景导航者(4.05版本以后)和Internet Explorer(4.01版本以后)支持使用持久链接链接Web服务器和代理服务器。
网景不使用过时时间来关闭持久连接。而是对所有空闲的持久链接进行排队。当需要打开一个新的持久链接,但连接到不同的服务器上时,浏览器使用最近最少使用算法终止一个空闲的持久链接。[6]
Internet Explorer支持持久链接,IE 6和IE 7缺省使用2个持久链接,而IE 8缺省使用6个持久链接。[7]持久链接在不活跃60秒后过时,可以在Windows注册表中修改。[8]
Mozilla Firefox支持持久链接。可以定制同时的持久连接的最大个数(每个服务器,每个代理服务器,总数)。连接在不活跃300秒(5分钟)后过时(配置中可以修改)。[9]
Opera 4.0版本开始支持持久链接.[10]可以配置同时的持久连接的最大个数(每个服务器,总数)。
参考文献
- ↑ Persistent HTTP Connections in RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1". [2012-01-19].
- ↑ Apache HTTP Server - KeepAlive Directive. [2012-01-19].
- ↑ Apache HTTP Server 2.0 - KeepAliveTimeout Directive. [2012-01-19].
- ↑ Apache HTTP Server 2.2 - KeepAliveTimeout Directive. [2012-01-19].
- ↑ Multiple (wiki). Httpd/KeepAlive. Docforge. [2010-01-30].
- ↑ Zhe Wang and Pei Cao. Persistent Connection Behavior of Popular Browsers. University of Wisconsin-Madison. 1998-12-09 [2009-07-08].
- ↑ IE8 speeds things up. stevesouders.com. 2008-03-10 [2009-07-17].
- ↑ How to change the default keep-alive time-out value in Internet Explorer. Microsoft. 2007-10-27 [2009-07-17].
- ↑ Network.http.keep-alive.timeout. mozillazine.org. [2009-07-17].
- ↑ Opera 4.0 Upgrades File Exchange: Includes HTTP 1.1. Opera Software. 2000-03-28 [2009-07-08].