HTTP2.0——头部压缩

先凉出常见术语

Header Field(头部域): 一个名值对。 名字和值都是以八进制存在的。

Dynamic Table(动态表): 动态表是用于存放含有索引值的头部域的。 这个表示动态变化的而且针对于编码或者解码的内容的。 

Static Table(静态表): 静态表只要用于存放含有索引值的频繁出现的头部域的。这个表是有序的、只读、可访问的而且在几乎所有的编码或者解码的内容中可以共享的。

Header List(头部列表):头部列表是头部域的有序集合一起被编码的而且可能含有重复头部域。一个完整的含有Http/2头部快的头部域就是一个头部列表。

Header Field Respresentation(头部域表示):一个头部域在编码后可以以一个字面值也可以是一个索引值。

Header Block(头部块):一个有序的头部域表示在被解码的时候就是一个完成头部列表。

 

头部压缩需要在支持 HTTP/2 的浏览器和服务端之间:

  • 维护一份相同的静态字典(Static Table),包含常见的头部名称,以及特别常见的头部名称与值的组合;
  • 维护一份相同的动态字典(Dynamic Table),可以动态地添加内容;
  • 支持基于静态哈夫曼码表的哈夫曼编码(Huffman Coding);

 

静态字典的作用有两个

1)对于完全匹配的头部键值对,例如 :method: GET,可以直接使用一个字符表示;

2)对于头部名称可以匹配的键值对,例如 cookie: xxxxxxx,可以将名称使用一个字符表示。

 

posted @ 2021-03-15 09:11  Jiox  阅读(883)  评论(0编辑  收藏  举报