基本概念
持久连接:使用同一个TCP连接发送和接受 多个 http请求/应答;
非持久连接:一个TCP连接只能发送和接受 一个 http请求/应答;
持久连接的两种类型
keep-alive机制(http1.0)
keep-alive握手过程如下:
- HTTP/1.0+支持keep-alive连接,但默认并未激活。客户端通过发送一个包含Connection: Keep-Alive首部的请求来请求服务器激活keep-alive连接,即将这条连接保持在打开状态。
- 如果服务器愿意为下一条请求重用此连接,就会在响应中包含相同的首部。若没有,服务器就会在发回响应报文后关闭连接。客户端就是通过检测响应中是否包含Connection:
Keep-Alive响应首部来判断服务器是否会在发送响应后关闭连接的- 假如服务器同意使用keep-alive连接,那么接下来客户端必须在所有希望保持持久连接的请求中包含Connection: Keep-Alive首部。如果没有发送该首部,服务器会在那条请求后关闭连接。
- 那么何时关闭持久连接呢?注意,Connection: Keep-Alive首部只是请求将连接保持在活跃状态。即使服务器和客户端都同意建立持久连接了,它们仍可以在任意时刻关闭空闲的keep-alive连接,且可随意限制keep-alive连接所处理事务的数量。