【要點】
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默認並未開啟管線化支持。