HTTP持久連線

HTTP持久連線HTTP persistent connection,也稱作HTTP keep-aliveHTTP connection reuse)是使用同一個TCP連線來傳送和接收多個HTTP請求/應答,而不是為每一個新的請求/應答打開新的連線的方法。

基本介紹

  • 中文名:HTTP持久連線
  • 外文名:HTTP persistent connection
操作,優勢,劣勢,

操作

在 HTTP 1.0 中, 沒有官方的 keepalive 的操作。通常是在現有協定上添加一個指數。如果瀏覽器支持 keep-alive,它會在請求的包頭中添加:
Connection: Keep-Alive
然後當伺服器收到請求,作出回應的時候,它也添加一個頭在回響中:
Connection: Keep-Alive
這樣做,連線就不會中斷,而是保持連線。當客戶端傳送另一個請求時,它會使用同一個連線。這一直繼續到客戶端或伺服器端認為會話已經結束,其中一方中斷連線。
在 HTTP 1.1 中所有的連線默認都是持續連線,除非特殊聲明不支持。HTTP 持久連線不使用獨立的 keepalive 信息,而是僅僅允許多個請求使用單個連線。然而, Apache 2.0 httpd 的默認連線過期時間是僅僅15秒,對於 Apache 2.2 只有5秒。短的過期時間的優點是能夠快速的傳輸多個web頁組件,而不會綁定多個伺服器進程或執行緒太長時間。

優勢

  • 較少的CPU和記憶體的使用(由於同時打開的連線的減少了)
  • 允許請求和應答的HTTP管線化
  • 降低擁塞控制(TCP連線減少了)
  • 減少了後續請求的延遲(無需再進行握手
  • 報告錯誤無需關閉TCP連線
根據RFC 2616 (47頁),用戶客戶端與任何伺服器和代理伺服器之間不應該維持超過2個連結。代理伺服器應該最多使用2×N個持久連線到其他伺服器或代理伺服器,其中N是同時活躍的用戶數。這個指引旨在提高HTTP回響時間並避免阻塞。

劣勢

對於現在的廣泛普及的寬頻連線來說,Keep-Alive也許並不像以前一樣有用。web伺服器會保持連線若干秒(Apache中默認15秒),這與提高的性能相比也許會影響性能。[7]
對於單個檔案被不斷請求的服務(例如圖片存放網站),Keep-Alive可能會極大的影響性能,因為它在檔案被請求之後還保持了不必要的連線很長時間。

相關詞條

熱門詞條

聯絡我們