HTTP学习笔记(一)——HTTP1.1的管道技术(HTTP Pipelining)

HTTP Pipelining是这样一种技术:在等待上一个请求响应的同时,发送下一个请求。(译者注:作者这个解释并不完全正确,HTTP Pipelining其实是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应。)但就像在超市收银台或者银行柜台排队时一样,你并不知道前面的顾客是干脆利索的还是会跟收银员/柜员磨蹭到世界末日(译者注:不管怎么说,服务器(即收银员/柜员)是要按照顺序处理请求的,如果前一个请求非常耗时(顾客磨蹭),那么后续请求都会受到影响),这就是所谓的线头阻塞(Head of line blocking)。


当然,你可以在选择队伍时候就做好功课,去排一个你认为最快的队伍,或者甚至另起一个新的队伍(译者注:即新建一个TCP连接)。但不管怎么样,你总归得先选择一个队伍,而且一旦选定之后,就不能更换队伍。


但是,另起新队伍会导致资源耗费和性能损失(译者注:新建 TCP 连接的开销非常大)。这种另起新队伍的方式只在新队伍数量很少的情况下有作用,因此它并不具备可扩展性。(译者注:这段话意思是说,靠大量新建连接是不能有效解决延迟问题的,即HTTP Pipelining并不能彻底解决Head ofline blocking问题。)所以针对此问题并没有完美的解决方案。


这就是为什么,即使在2015年的今天,大部分桌面浏览器仍然会选择默认关闭HTTP pipelining这一功能的原因。

HTTP(Hypertext Transfer Protocol)是用于在网络上传输超文本的协议,它定义了客户端和服务器之间的通信规则。HTTP 1.0,HTTP 1.1HTTP 1.2是HTTP协议的不同版本,它们有以下区别: 1. HTTP 1.0: - 每个HTTP请求/响应都需要建立一个新的TCP连接,并在完成后关闭连接,这种方式效率较低。 - 不支持持久连接(persistent connection),每个请求只能得到一个响应。 - 不支持管道化(pipelining),即在一个连接中同时发送多个请求,只有第一个请求得到响应后才能发送下一个请求。 2. HTTP 1.1: - 引入了持久连接(persistent connection),在一个TCP连接上可以发送多个请求和响应,减少了连接建立和关闭的开销。 - 支持管道化(pipelining),可以在一个连接中同时发送多个请求,提高了并发性能。 - 引入了HTTP流水线(HTTP pipelining)机制,可以同时发送多个请求,而无需等待每个请求的响应。 3. HTTP 1.2: - 引入了虚拟主机(virtual hosting)的支持,使得在一台服务器上可以托管多个域名。 - 支持多路复用(multiplexing),可以在一个TCP连接上同时发送多个请求/响应,提高了并发性能。 - 引入了头部压缩(header compression)机制,减少了传输时的数据量。 - 支持服务器推送(server push),服务器可以主动向客户端发送资源,提高了性能。 总的来说,HTTP 1.0到HTTP 1.1HTTP 1.2的升级主要是为了提高性能和效率,减少连接建立和关闭的开销,支持并行处理多个请求/响应,并引入了一些新的特性来改进网络通信的效果。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值