短连接
- 每一个http请求都有他自己独立的链接完成。即发起每一个http请求之前都会有一次TCP握手
- HTTP/1.0的默认模型;HTTP/1.1需要设置Connection为close
长连接
- 长连接中,一个TCP连接会保持一段时间,用于发送一系列请求,节省了新建TCP连接的时间,还可以利用TCP性能争抢能力(热连接:TCP 连接的性能只有在该连接被使用一段时间后才能得到改善)
- 当然这个连接也不会一直保留着:连接在空闲一段时间后会被关闭(服务器可以使用 Keep-Alive 协议头来指定一个最小的连接保持时间)。
- HTTP/1.0 里默认并不适用长连接。把 Connection 设置成 close 以外的其它参数都可以让其保持长连接,通常会设置为 retry-after;
在 HTTP/1.1 里,默认就是长连接的。 - 缺点:就算是在空闲状态,它还是会消耗服务器资源,而且在重负载时,还有可能遭受 DoS attacks 攻击。这种场景下,可以使用非长连接,即尽快关闭那些空闲的连接,也能对性能有所提升。
流水线
- 在长连接中,多个HTTP请求是串行执行的,下一个请求需要等到上一个请求返回后才能发送;但流水线是并行执行的,可以同时发送多个请求
- 这种连接方式目前并没有普及,现代浏览器也不支持
网友评论