http2.0之頭部壓縮


什么是頭部壓縮?為什么要頭部壓縮?

  我們知道,http請求和響應都是由【狀態行、請求/響應頭部、消息主題】三部分組成的。 一般而言,消息主體都會經過gzip壓縮,或者本身傳輸的就是壓縮過后的二進制文件(如圖片、音頻等),但是狀態行和頭部多是沒有經過任何壓縮,而是直接以純文本的方式進行傳輸的。

  然而,隨着web功能越來越復雜,請求數量越來越多,隨之而來的就是頭部的流量越來越多,並且在建立初次鏈接之后的鏈接也要發送user-agent等信息,是在是一種浪費。 

  因此,http2提出了對請求和響應的頭部進行壓縮,即不再只是壓縮主題部分,這種壓縮方式就是HAPCK --- 其設計簡單而靈活。

  通過壓縮,頭部大小可以減少一半之多,如果后面重復發送請求,那么可能壓縮后的頭部大小只有原始大小的 1/10。

 

  

一些術語

Header Field(頭部域): 一個名值對。 名字和值都是以八進制存在的。

Dynamic Table(動態表): 動態表是用於存放含有索引值的頭部域的。 這個表示動態變化的而且針對於編碼或者解碼的內容的。 

Static Table(靜態表): 靜態表只要用於存放含有索引值的頻繁出現的頭部域的。這個表是有序的、只讀、可訪問的而且在幾乎所有的編碼或者解碼的內容中可以共享的。

Header List(頭部列表):頭部列表是頭部域的有序集合一起被編碼的而且可能含有重復頭部域。一個完整的含有Http/2頭部快的頭部域就是一個頭部列表。

Header Field Respresentation(頭部域表示):一個頭部域在編碼后可以以一個字面值也可以是一個索引值。

Header Block(頭部塊):一個有序的頭部域表示在被解碼的時候就是一個完成頭部列表。

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM