1.误解的Connection首部
当http报文经过中间客户端到服务端中间的各种代理设备时,对标签中列出的头信息进行删除,close是事务结束后关掉此条连接
2.消除串行化的时延
并行连接:多条TCP连接发起并发的HTTP请求
持久连接:重用TCP连接,消除连接和关闭时延
管道化连接:通过并发的TCP连接发起并发的HTTP请求
3.打开少量的并行连接,每一个连接都是持久连接
HTTP/1.0+中的keep-alive 和 HTTP/1.1中的 persistent
客户端发送Connection:keep-alive 服务端响应Connection:keep-alive就是支持,否则就是不支持
4.HTTP/1.1的持久连接persistent
与keep-alive的区别是,这个默认就是打开的除非发送Connection:close显式关闭
5.连接会在任意的时候关闭掉,每条http响应都应该包含Content-Length以校对数据的完整性
6.连接的关闭和重试会带来一些副作用,如果是post的请求重试多次会有风险
7.正常关闭连接,会有完全关闭和半关闭两种
完全关闭就是服务端输入输出全关了,半关闭是只关闭了输出或者输入
当数据被发送到一条已经关闭的连接上时,会出现,连接被对端重置的错误
关闭时应该先关闭输出通道,再关闭输入通道
8.并行连接并不一定更快
(1)客户端的带宽不足
(2)复杂的web页面可能会有数十或数百个内嵌对象,客户端可能可以打开数百个连接,但web服务器通常要同时处理很多其他用户的请求,所以很少有web服务器希望出现这样的情况,这会造成服务器性能的严重下降。
实际上,浏览器确实使用了并行连接,但他们会将并行连接的数量限制一个较小的值(通常4个)。服务器可以随意关闭来自特定客户端的超量连接。