一、连接复用keep-alive
当我们去连接www.baidu.com的时候,会经历以下过程(没有连接复用)
连接过程:
发起TCP连接---->请求资源----->下载资源---->关闭TCP连接---->再次发起TCP连接.....
如果有多个资源需要请求,我们就要发起tcp然后关闭tcp连接,然后再发起和关闭
如果可以发起一次tcp连接下载资源后不关闭tcp连接一直请求资源,直到最后才关闭tcp连接,不就更快了么。省掉先开再关的过程
二、如何实现keep-alive
1.在请求头里添加以下字段
Connection:keep-alive
2.如果服务器支持连接复用,那么服务器也会回复相同的字段
Connection:keep-alive
总结:连接复用就是在http协议里添加Connection:keep-alive字段实现tcp连接复用(注意:http协议里添加http字段然后实现tcp连接复用)
三、keep-alive连接复用的设置
虽然我们实现了连接复用,但肯定有一个过期时间,这个过期时间如何设置
在http协议里添加如下字段
KeepAlive:timeout=5,max=100
timeout=5表示如果5s内还不发起第二次请求,那么此次tcp连接就关闭了
max=100表示最多请求响应100次,再多就不服务了
四、KeepAlive是请求头还是响应头?
都可以,如果浏览器发起KeepAlive,那么服务器就有可能会返回相同的KeepAlive
比如:浏览器发起的KeepAlive的timeout是5,服务器可能会同意也可能会不同意
同意就会返回相同的KeepAlive,不同意就会返回不同的KeepAlive
一般浏览器都会遵循服务器的KeepAlive的设置,除了IE
五、前端怎么添加Connection:keep-alive字段?
如果你使用的http协议版本是1.1及以上的,那么这个字段是自动加的
如果是1.0,这个字段就需要你手动添加了