Http属于应用层协议,所谓Http的长连接和短链接本质上说的是TCP的长连接和短连接。只有TCP连接才有真正的长连接和短连接这一说法。
所谓Http/1.1起支持长连接,并不是Http/1.1可以建立长连接,而是它支持以请求的方式进行连接的发起,该连接依然时基于TCP的
Http/1.0和Http/1.1
Http/1.0默认使用短连接,客户端每次进行一次http操作,就建立一次连接,任务结束就中断连接。
Http/1.1起默认使用长连接,响应头中会有Connection:keep-alive
字段,即当一个网页打开完成之后,客户端和服务器之间用于传输http数据的TCP连接不会关闭,客户端再次访问此服务器时,会继续使用这个已经建立的连接。
Tcp短连接
指通信双方有数据交互时,就建立一个Tcp连接,数据交互完成后,则断开此Tcp连接。
优点:不占用服务器资源,即用完则断开
缺点:在多请求的情况下会频繁建立连接(握手+挥手),导致响应变慢
Tcp长连接
指在连接发起后,在请求关闭连接前客户端与服务器都保持连接,实质上时保持这个通信的通道,之后便可以对其进行复用。
长连接并不是永久连接,如果在一段时间内若还没有http请求发出的话,那么这个长连接就会断开。这个时间就是超时时间,具体时间可以在Header中设置Keep-Alive:timeout=60s
优点:可以复用Tcp连接,减少了每次建立连接和断开连接的开销
缺点:连接数太多占用服务器资源
应用场景
长连接多用于操作频繁的通信,而且要满足连接数不能太多的情况,如数据库的连接用的长连接。
短连接一般用于像Web网站的http服务,因为长连接会耗费一定的服务器资源。
参考:部分资料来自于网络