http连接复用进化论

HTTP协议是应用层协议,它定义万维网客户端如何与服务器进行通信。它在传输层的TCP协议的基础上进行数据传输

HTTP 1.0

在HTTP 1.0时代,默认一个http请求对应一个TCP连接,没有任何复用。也就是每发起一个http请求,就会创建一个TCP连接,请求完成后,TCP连接便会断开。

可以通过Connection和Keep-Alive两个头部字段配置使用持久连接。

HTTP 1.1

到了http1.1,底层的TCP默认是持久连接,前后串行的请求可以复用一个TCP连接。对后面的http请求来说,节约了等待TCP建立的时间。

使用持久连接时,如果上一个请求还没完成,此时发起的http请求,还是要建立新的TCP,所以TCP整体的利用率比较低,因此HTTP1.1也定义了一种管道化Pipelining机制,它允许先后发起多个请求,然后再依次接收这些请求的响应,不必等前一个请求结束后就可以发送下一个,但是因为它会导致队头阻塞,高优先级的请求很可能会被前面的阻塞,而且实现比较复杂,且只支持get和head请求,所以实现的浏览器很少,应用并不广泛。

不论是持久连接还是管道化,对连接的复用都不够完美,复用率比较低,所以当时前端会通过资源合并的方式减少请求数,以提升网页加载性能,比如雪碧图,css和JS打包、内联等等

HTTP 2.0

后来有了http2.0协议,定义了二进制分帧和多路复用,支持在一个TCP连接中同时双向传输多个请求和响应,多个ht

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值