HTTP
的长连接和短连接实际上是TCP
的长连接和短连接,HTTP
属于应用层协议。
短连接:浏览器和服务器每进行一次HTPP
操作,就建立一个连接,但任务结束就会中断这个连接
长连接:HTTP1.1
规定了默认保持长连接,也称为持久连接。
意思就是,数据传输完成了保持TCP
连接不断开(不发RST
包、不四次握手),等待在同域名下继续用这个通道传输数据。
长连接好处:
- 同一个客户端可以使用这个长连接处理其他请求,避免
HTTP
重新连接和断开所消耗的时间; - 服务器可以利用这个连接 主动推送 消息到客户端(重要的)。
HTTP
头部有了Connection: Keep-Alive
这个值,代表客户端期望这次请求是长连接的。但是并不代表一定会使用长连接,服务器端都可以无视这个值,也就是不按标准来。实现长连接要客户端和服务端都支持长连接。
keep-alive
的优点:
- 较少的
CPU
和内存的使用(由于同时打开的连接的减少了) - 允许请求和应答的
HTTP
管线化 - 降低拥塞控制 (
TCP
连接减少了) - 减少了后续请求的延迟(无需再进行握手)
- 报告错误无需关闭
TCP
连接