希望能耐心看下去,篇幅比较长,文字偏多,我尽量用易懂的图解释,尽可能详细的去叙述,总结清楚
Http 长连接 和 短连接:
- 早期的 HTTP协议,如HTTP0.9之前也被称为是“无连接”的协议。不会与服务器保持长期的连接状态,所以也称为短连接,短连接每一次的请求都需要重新建立TCP连接,有10个请求就需要建立10次TCP连接,这个效率,可想而知是非常低的
- 到Http1.0就出现了长连接的通信方式,解决了短连接多次建立TCP连接的痛点,现在
Http1.1
基本都是默认开启Connection: keep-alive
长连接的, TCP连接只要建立一次,后续的请求都复用该通道,不用再重新建立TCP通道,效率大大提升
需要注意的是
:不管是http短连接还是长连接,它们的请求和响应都有有序的,都是等上一次请求响应后,才接着下一个请求的,那能不能不等第一次请求回来,我就开始发第二次请求呢?这就引出http管道化了
http的管道化和非管道化:
在长连接的基础上
,HTTP1.1进一步地支持在持久连接上使用管道化(pipelining)特性
,这是相对于keep-alive连接的又一性能优化
。在相应到达之前,可以将多条请求放入队列,当第一条请求发往服务器的时候,第二第三条请求也可以开始发送了,不用等到第一条请求响应回来,在高延时网络条件下,这样做可以降低网络的环回时间,提高性能。
非管道化与管道化的区别示意: