HTTP/2引入了若干关键改进来优化数据传输,提高效率和速度,其中包括:
- 二进制帧层:HTTP/2采用二进制格式传输数据,而不是HTTP/1.x的文本格式。这种改变使得请求和响应可以被分割成更小、易于管理的帧,这些帧隶属于一个流,每个流有一个唯一的标识符。二进制协议也更加高效,易于解析和减少错误。
- 多路复用(Multiplexing):在HTTP/1.x中,每个请求都需要一个单独的TCP连接,或者通过管道化来尝试解决这个问题,但存在队头阻塞问题。HTTP/2允许在单个连接上同时发送多个请求和响应,无需等待前一个传输完成,大大减少了延迟并提高了页面加载速度。
- 服务器推送(Server Push):HTTP/2允许服务器在客户端需要之前就主动将资源推送给客户端,这样可以进一步减少等待时间,提高性能。例如,当客户端请求一个HTML文件时,服务器可以预测客户端接下来会请求的CSS文件和JavaScript文件,并主动发送这些资源。
- 头部压缩:HTTP/2使用HPACK压缩格式减小了头部大小。由于HTTP/1.x的头部数据每次请求几乎都是重复的,因此这种压缩显著减少了传输的数据量。
- 优先级和流控制:HTTP/2允许设置数据流、消息和帧的优先级,使得管理数据流的顺序和资源分配更加高效。此外,流控制机制防止任何单个数据流消耗所有可用带宽。