一、keep-alive 连接
(1) 我们在使用串行连接的时候,比如加载四张图片,当加载第一张图片时,会建立连接,加载完后会关闭连接,加载第二张图片时同样会先建立连接再关闭连接,以此类推,这样就会消耗很多时间,HTTP/1.0+ "keep-alive" 连接在加载完第一张图片的时候会有 keep-alive 检测机制,使得连接保持在活跃状态而不会被关闭,这样就能持续加载了,提高了效率节省了时间。
(2) 实现 HTTP/1.0 keep-alive 连接的客户端可以通过包含 Connection:Keep-Alive 首部请求将一条连接保持在打开状态
(3) 客户端和服务器可以在任意时刻关闭空闲的 keep-alive 连接,并可随意限制 keep-alive 连接所处理事务的数量
二、keep-alive 连接的限制
(1) 在 HTTP/1.0 中,keep-alive 并不是默认使用的,客户端必须发送一个 Connection:Keep-Alive 请求首部来激活 keep-alive 连接
(2) Connection:Keep-Alive 首部必须随所有希望保持持久连接的报文一起发送,否则服务器就会在那条请求之后关闭连接
(3) 不应该与无法确定是否支持 Connection 首部的代理服务器建立 keep-alive 连接
三、哑代理和盲中继
盲中继就是不管 HTTP 报文内容是什么,都进行转发,但是转发 Connection 首部时,如果带有 keep-alive 属性,那么代理并不会理解 keep-alive 的意思,在进行完一次事务 (request-response) 后,代理会将连接关闭,而此时,客户端和服务端都以为持久化连接已经建立了,还在傻傻的等着继续的发送,这个代理就“哑”了。