【要點】 1. 什麼是持久連接? 2. 什麼是管線化? 【總結】 1.什麼是持久連接? (keep alive模式) HTTP1.1規定了預設保持長連接(HTTP persistent connection ,也有翻譯為持久連接);數據傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待 ...
【要點】
1. 什麼是持久連接?
2. 什麼是管線化?
【總結】
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
【註】
1. 那麼持久連接和管線化的區別在於:
持久連接的一個缺點是請求和響應式是順序執行的,只有在請求1的響應收到之後,才會發送請求2,而管線化不需要等待上一次請求得到響應就可以進行下一次請求。實現並行發送請求。
2. 只有GET和HEAD要求可以進行管線化,而POST則有所限制
3. 初次創建連接時也不應啟動管線機制,因為對方(伺服器)不一定支持HTTP/1.1版本的協議。
4.HTTP1.1要求伺服器端支持管線化,但並不要求伺服器端也對響應進行管線化處理,只是要求對於管線化的請求不失敗,而且現在很多伺服器端和代理程式對管線化的支持並不好,現代瀏覽器Chrome和Firefox預設並未開啟管線化支持。