HTTP/1.1 性能瓶颈:
1.请求 / 响应头部(Header)未经压缩就发送。只能压缩Body的部分;
2.没有请求优先级控制;
3.服务器是按请求的顺序响应的,有队头阻塞;
4.请求只能从客户端开始,服务器只能被动响应。
http/2.0
1.HTTP/2 会压缩头,如果你同时发出多个请求会帮你消除请求头重复的部分。
2.数据包不是按顺序发送的,同一个连接里面连续的数据包,要对数据包做标记,指出它属于哪个回应。
3.纯文本形式的报文改为了二进制格式,统称为帧:头信息帧和数据帧。
4.多路复用:一个连接中并发多个请求或回应,而不用按照顺序一一对应。
5.服务器推送,主动向客户端发消息。
问题:
多个 HTTP 请求在复用一个 TCP 连接,下层的 TCP 协议是不知道有多少个 HTTP 请求的。所以一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来。
http/3.0
1.传输层由TCP转成了UDP