1.首部压缩
1.X版本中,首部用文本格式传输,通常会给每个传输增加500-800字节的开销。现在打开一个网页上百个请求已是常态,而每个请求带的一些首部字段都是相同的,例如cookie、user-agent等。HTTP2为此采用HPACK压缩格式来压缩首部。头部压缩需要在浏览器和服务器端之间:
- 维护一份相同的静态字典,包含常见的头部名称,以及常见的头部名称和值的组合
- 维护一份相同的动态字典,可以动态的添加内容
- 支持基于静态哈夫曼码表的哈夫曼编码(Huffman Coding)
HTTP2静态字典的一部分如下:
静态字典的作用有两个:
1)对于完全匹配的头部键值对,例如 :method: GET
,可以直接使用一个字符表示;
2)对于头部名称可以匹配的键值对,例如 cookie: xxxxxxx
,可以将名称使用一个字符表示。
比方说我们要传:method: GET,可以直接传一个字符2。同时,浏览器可以告知服务端,将 cookie: xxxxxxx
添加到动态字典中,这样后