-
HTTP1.0
每次从客户端向服务器发送请求,都要建立一个TCP
连接,这样频繁的建立TCP
连接和断开链接,对于用户体验来说那是非常差劲的,以及服务器的压力都会比较大
image.png
- 到了
HTTP1.1
, 有了进一步的改进, 这次TCP可以建立一个长的连接,这样在Client和Server之间就可以保持连接, 浏览器可以发送多个http请求, 服务器依次对这些请求进行处理,发出响应;但是对于某一个比较复杂的请求,服务器在处理它的过程中,就会导致后面的请求无法处理,最终结果就是先发送响应,然后再处理后续的请求。 这样就会造成线头阻塞(Head of line blocking
),反应在浏览器端就是无法及时获得所需要内容, 有延迟
image.png
- 到了
HTTP2.0
, 又发生了进一步的改进,这次TCP仍然是建立长连接,不同的, 它具有多路连接的特性,所谓多路连接,即连接共享,即每一个request
都是是用作连接共享机制的。一个request
对应一个id
,这样一个连接上可以有多个request
,每个连接的request
可以随机的混杂在一起,接收方可以根据request
的id
将request
再归属到各自不同的服务端请求里面,简单来说即多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行
image.png