HTTP2的頭部壓縮是HPACK算法。在客戶端和服務器兩端建立“字典”,用索引號表示重復的字符串,采用哈夫曼編碼來壓縮整數和字符串,可以達到50%~90%的高壓縮率。具體來說:在客戶端和服務器端使用“首部表”來跟蹤和存儲之前發送的鍵值對,對于相同的數據,不再通過每次請求和響應發送;
首部表在HTTP/2的連接存續期內始終存在,由客戶端和服務器共同漸進地更新;
每個新的首部鍵值對要么被追加到當前表的末尾,要么替換表中之前的值。例如下圖中的兩個請求, 請求一發送了所有的頭部字段,第二個請求則只需要發送差異數據,這樣可以減少冗余數據,降低開銷。