http系列2--连接管理

http连接管理

思维导图

串行

http是基于TCP进行连接的。
TCP时延包括三次握手,慢启动等
如果只是简单的串行连接,每个事务都需要建立一条新的连接 ,TCP的性能时延可能会叠加。

并行连接

HTTP允许客户端打开多条连接,并行的执行多个HTTP事务。
http1.1 使用的就是并行连接,即同时发送多条http请求,每次都会同时重新发起新的http请求。

好处是 不需要下一次的http事务等待上一个结束在发起,可以同时发起。

不是说同一个连接同时只能发送一个http请求吗,为什么还可以并行连接呢?

答:一个连接只能同时发送一个http请求,但是浏览器可以同时建立多个连接,就可以同时发送多个请求了,这就是并行连接。

在这里插入图片描述
如图:可以看到前6个请求忽略程序时延,几乎是同时开始的。

但是并不是所有的浏览器都是最大同时同域允许6个http事务,详情可以自行查找。

图中前6个请求会分别建立6个连接,
注意:这里的连接不是同一个TCP连接中不同的http,而是不同的TCP连接,搞清楚层级概念 这是一个非常重要的概念
证明如下图
每个链接都会发起dns寻址,说明重新建立了连接。
在这里插入图片描述
在这里插入图片描述

为什么浏览器要限制同域最大并行数量?

  1. 同时打开大量的链接会消耗很多内存资源,引发自身的性能问题。
  2. 同时过多的请求数会给服务器带来性能问题。

并行连接的一定快吗?
不一定,如果带宽有限,会造成多个请求抢占带宽,反而会让用户感觉页面更慢了(白屏),相比串行先出现一部分来说,体验更差。

持久连接

http1.0开始有个keep-alive首部,但是http1.0默认关闭,http1.1开始才默认开启。

这个首部如果不开启的话,每次一个http请求完成之后,TCP连接就会关闭。下一个http请求需要重新建立连接,经历TCP连接三次握手,浪费时间。

持久连接就是允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便将来的HTTP请求重用现存的连接。

在事务处理结束之后仍保持打开状态的TCP连接被称为持久连接。

好处是:

  1. 避免了TCP缓慢的连接建立的过程
  2. 避免TCP慢启动的拥塞适应阶段

持久连接与并行连接

持久连接和并行连接配合使用是最高效的方式,现代浏览器大多也是这样配合使用的
在这里插入图片描述
如下图:可以看到确实没有再重新发起dns查询,使用的是同一条TCP连接

在这里插入图片描述

管道化连接

http1.1允许在持久连接上可选的使用请求管道。这是对keep-alive的又一次优化。在响应到达之前,可以将多条请求放入到队列中。当第一条到达服务器后,第二条也可以开始发送。
但是管道存在很多问题,所以很少使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值