首頁  >  文章  >  web前端  >  http的持久連接和管線化

http的持久連接和管線化

yulia
yulia原創
2018-09-08 17:45:002220瀏覽

1.什麼是持久連結? (keep alive模式)
 HTTP1.1規定了預設保持長連接(HTTP persistent connection,也有翻譯為持久連接);資料傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待在同域名下繼續用這個通道傳輸資料;相反的就是短連線。

HTTP 1.1版本支援持久連線1.0版本不支援
與非持久連線的差異:
持久連線使用戶端到伺服器端連線持續有效,避免了重新建立連線
大大減少了連線的建立以及關閉延遲。 HTTP連線是建立在TCP協定之上的,建立一條TCP連線需要三次握手,TCP連線關閉時需要四次揮手。這些都是需要時間的。
 

2.什麼是管線化
管線化機制須透過永久連接(persistent connection)完成,僅HTTP/1.1支援此技術(HTTP/1.0不支持)
在使用持久連接的情況下,某個連接訊息的傳遞類似於
請求1 -> 回應1 -> 請求2 ->回應2
管線化:某個連線上的訊息變成了類似這樣
請求1 -> 請求2 -> 請求3 -> 回應1 -> 回應2 -> 回應3

##【註】

a、那麼持久連接和管線化的區別在於:持久連接的一個缺點是請求和響應式是順序執行的,只有在請求1的回應收到之後,才會發送請求2 ,而管線化不需要等待上一次請求得到回應就可以進行下一次請求。實作並行發送請求。

b、 只有GET和HEAD要求可以進行管線化,而POST則有所限制


c、初次創建連接時也不應啟動管線機制,因為對方(伺服器)不一定支援HTTP/1.1版本的協定  

d、HTTP1.1要求伺服器端支援管線化,但並不要求伺服器端也對回應進行管線化處理,只要求管線化的請求不失敗,而且現在很多伺服器端和代理程式對管線化的支援並不好,現代瀏覽器Chrome和Firefox預設並未開啟管線化支援。

http的持久連接和管線化

以上是http的持久連接和管線化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn