HTTP/1.0:
存在的問題,不能復(fù)用 TCP 連接,很消耗資源。
HTTP/1.1
解決了 HTTP/1.0 不能復(fù)用 TCP 連接的問題,使用流水線請求復(fù)用 TCP 連接,但是流水線請求必須按照順序請求,原因在于 HTTP/1.1 是一個文本協(xié)議,文本協(xié)議的解析必須等到上一個請求應(yīng)答完成之后才會有下一個,這就有可能發(fā)生流水線頭部阻塞。
HTTP/2.0
解決了 HTTP/1.0 流水線頭部阻塞的問題,使文本協(xié)議變成二進制協(xié)議,在傳輸?shù)倪^程中傳輸?shù)氖嵌M制的幀,根據(jù)二進制幀的格式,可以對亂序的請求結(jié)果進行拼接,解決了頭部阻塞的問題。但是如果傳輸?shù)倪^程中,有一個包丟了,請求還會等待重傳,一次性把數(shù)據(jù)返回給用戶層。
HTTP/2.0 + PUSH
優(yōu)化了 HTTP/2.0 的響應(yīng)速度,服務(wù)器根據(jù)瀏覽器的請求,直接把瀏覽器所需要的資源一次性全部 PUSH 過去,減少 RTP。
HTTP/3.0
使用 UDP,解決了數(shù)據(jù)包之間的阻塞,同時,還可以根據(jù)數(shù)據(jù)包之間的關(guān)系,根據(jù) FEC(前向錯誤糾正) 包計算出丟的包的數(shù)據(jù)。