本頁使用了標題或全文手工轉換

HTTP持久連線

維基百科,自由的百科全書
跳到: 導覽搜尋

HTTP持久連線HTTP persistent connection,也稱作HTTP keep-aliveHTTP 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]

優勢[編輯]

  • 較少的CPU和記憶體的使用(由於同時開啟的連線的減少了)
  • 允許請求和應答的HTTP管線化
  • 降低擁塞控制TCP連線減少了)
  • 減少了後續請求的延遲(無需再進行握手
  • 報告錯誤無需關閉TCP連線

根據RFC 2616 (47頁),用戶用戶端與任何伺服器和代理伺服器之間不應該維持超過2個連結。代理伺服器應該最多使用2×N個持久連線到其他伺服器或代理伺服器,其中N是同時活躍的用戶數。這個指引旨在提高HTTP響應時間並避免阻塞。

劣勢[編輯]

對於現在的廣泛普及的寬頻連線來說,Keep-Alive也許並不像以前一樣有用。web伺服器會保持連線若干秒(Apache中預設15秒),這與提高的效能相比也許會影響效能。[7]

對於單個檔案被不斷請求的服務(例如圖片存放網站),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] 可以配置同時的持久連線的最大個數(每個伺服器,總數)。

參考文獻[編輯]

  1. ^ Persistent HTTP Connections in RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1"
  2. ^ Apache HTTP Server - KeepAlive Directive 互聯網檔案館存檔,存檔日期2012-01-21.
  3. ^ Apache HTTP Server 2.0 - KeepAliveTimeout Directive
  4. ^ Apache HTTP Server 2.2 - KeepAliveTimeout Directive
  5. ^ Multiple (wiki). Httpd/KeepAlive. Docforge. [2010-01-30]. (原始內容存檔於2010-01-06). 
  6. ^ Zhe Wang and Pei Cao. Persistent Connection Behavior of Popular Browsers. University of Wisconsin-Madison. 1998-12-09 [2009-07-08]. 
  7. ^ IE8 speeds things up. stevesouders.com. 2008-03-10 [2009-07-17]. 
  8. ^ How to change the default keep-alive time-out value in Internet Explorer. Microsoft. 2007-10-27 [2009-07-17]. 
  9. ^ Network.http.keep-alive.timeout. mozillazine.org. [2009-07-17]. 
  10. ^ Opera 4.0 Upgrades File Exchange: Includes HTTP 1.1. Opera Software. 2000-03-28 [2009-07-08]. 

外部連結[編輯]