HTTP2 相比于之前版本有哪些提高

Youky ... 2021-10-11 计算机网络
  • HTTP
About 1 min

# HTTP2 相比于之前版本有哪些提高

# 头部压缩

对于请求体的压缩,可以通过Content-Encoding来指明。

而当请求十分复杂时(尤其是对于 GET 请求,几乎都是请求头),对于请求头本身的压缩也十分有必要。

因此,HTTP2 针对头部字段,采用了HPACK压缩算法:

  • 在服务器和客户端之间建立哈希表,对于已经使用过的字段,后续将索引传递给对方即可。
  • 对整数和字符串进行哈夫曼压缩

# 二进制分帧 & 多路复用

HTTP2 的多路复用,从协议层面解决了 HTTP 的队头阻塞问题。

队头阻塞:前面的报文没有收到回复时,阻塞后续所有报文的回复

采用的方法是二进制分帧

  • 将报文全部转成二进制的 01 串,因此报文被分成了一个个二进制的帧
  • 在一个 TCP 连接上,可以进行多个数据帧的通信
  • 多个帧之间是无序的,但对于一个报文来说,它的不同帧是按序的

# 服务器推送

服务器除了响应客户端请求外,还可以主动发送内容。如请求了 HTML 文件后,服务器主动发送里面引用的 css 文件和图片等。如 NGINX 的配置:

location / {
  root   /usr/share/nginx/html;
  index  index.html index.htm;
  http2_push /style.css;
  http2_push /example.png;
}
1
2
3
4
5
6
Last update: October 16, 2022 21:28
Contributors: Youky , youky7