-
HTTP1.0每次從客戶端向服務(wù)器發(fā)送請求,都要建立一個TCP連接,這樣頻繁的建立TCP連接和斷開鏈接,對于用戶體驗(yàn)來說那是非常差勁的,以及服務(wù)器的壓力都會比較大
image.png
- 到了
HTTP1.1, 有了進(jìn)一步的改進(jìn), 這次TCP可以建立一個長的連接,這樣在Client和Server之間就可以保持連接, 瀏覽器可以發(fā)送多個http請求, 服務(wù)器依次對這些請求進(jìn)行處理,發(fā)出響應(yīng);但是對于某一個比較復(fù)雜的請求,服務(wù)器在處理它的過程中,就會導(dǎo)致后面的請求無法處理,最終結(jié)果就是先發(fā)送響應(yīng),然后再處理后續(xù)的請求。 這樣就會造成線頭阻塞(Head of line blocking),反應(yīng)在瀏覽器端就是無法及時(shí)獲得所需要內(nèi)容, 有延遲
image.png
- 到了
HTTP2.0, 又發(fā)生了進(jìn)一步的改進(jìn),這次TCP仍然是建立長連接,不同的, 它具有多路連接的特性,所謂多路連接,即連接共享,即每一個request都是是用作連接共享機(jī)制的。一個request對應(yīng)一個id,這樣一個連接上可以有多個request,每個連接的request可以隨機(jī)的混雜在一起,接收方可以根據(jù)request的id將request再歸屬到各自不同的服務(wù)端請求里面,簡單來說即多個請求可同時(shí)在一個連接上并行執(zhí)行。某個請求任務(wù)耗時(shí)嚴(yán)重,不會影響到其它連接的正常執(zhí)行
image.png


