HTTP2.0總結
目錄
一、HTTP發展
二、效能
HTTP 2.0 的出現,相比於 HTTP 1.x ,大幅度的提升了 web 效能。HTTP 效能優化的關鍵並不在於高頻寬,而是低延遲。
HTTP/1:
HTTP/2:
三、HTTP2.0 與 1.1的區別
區別一:多路複用
區別二:首部壓縮
為什麼要壓縮?在 HTTP/1 中,HTTP 請求和響應都是由「狀態行、請求 / 響應頭部、訊息主體」三部分組成。一般而言,訊息主體都會經過 gzip 壓縮,或者本身傳輸的就是壓縮過後的二進位制檔案(例如圖片、音訊),但狀態行和頭部卻沒有經過任何壓縮,直接以純文字傳輸。隨著 Web 功能越來越複雜,每個頁面產生的請求數也越來越多,導致消耗在頭部的流量越來越多,尤其是每次都要傳輸 UserAgent、Cookie 這類不會頻繁變動的內容,完全是一種浪費。我們再用通俗的語言解釋下,壓縮的原理。頭部壓縮需要在支援 HTTP/2 的瀏覽器和服務端之間。
-
維護一份相同的靜態字典(Static Table),包含常見的頭部名稱,以及特別常見的頭部名稱與值的組合;
-
維護一份相同的動態字典(Dynamic Table),可以動態的新增內容;
-
支援基於靜態哈夫曼碼錶的哈夫曼編碼(Huffman Coding);
靜態字典的作用有兩個:
1)對於完全匹配的頭部鍵值對,例如 “:method :GET”,可以直接使用一個字元表示;
2)對於頭部名稱可以匹配的鍵值對,例如 “cookie :xxxxxxx”,可以將名稱使用一個字元表示。
區別三:HTTP/2支援伺服器推送
服務端推送是一種在客戶端請求之前傳送資料的機制。當代網頁使用了許多資源:HTML、樣式表、指令碼、圖片等等。在HTTP/1.x中這些資源每一個都必須明確地請求。這可能是一個很慢的過程。瀏覽器從獲取HTML開始,然後在它解析和評估頁面的時候,增量地獲取更多的資源。因為伺服器必須等待瀏覽器做每一個請求,網路經常是空閒的和未充分使用的。為了改善延遲,HTTP/2引入了server push,它允許服務端推送資源給瀏覽器,在瀏覽器明確地請求之前。一個伺服器經常知道一個頁面需要很多附加資源,在它響應瀏覽器第一個請求的時候,可以開始推送這些資源。這允許服務端去完全充分地利用一個可能空閒的網路,改善頁面載入時間。