Http1.0


存在的问题:建立的一次连接,只有包含一个请求响应(对应一个资源)
Http1.1 (1997)
改进1:连接可以复用。一次连接,多个请求响应(对应多个资源)
改进2:增加流水线(pipeline)操作。下一个请求可不用等上一个响应来之后再发送。(但响应到来的顺序不变 FIFO)
http1.1中默认开启,通过http请求头设置“connection: close”关闭。
http1.0默认是关闭的,通过http请求头设置“connection: keep-alive”进行开启
依旧存在的问题:
- 请求按次序,后来者需要排队等待
- 请求头都类似,重复传输浪费资源
- 同一域名浏览器有最大并行请求限制
HTTP2
基于二进制流。 将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。
将 HTTP 消息分解为独立的帧,交错发送,然后在另一端重新组装。
- 并行交错地发送多个请求,请求之间互不影响。
- 并行交错地发送多个响应,响应之间互不干扰。
- 使用一个连接并行发送多个请求和响应。



