http持久连接

2,242 阅读1分钟
  1. 一个web页面上的大部分请求,通常指向同一个站点(站点局部性)
  2. TCP具有慢启动的特性

因此, HTTP/1.1允许HTTP设备在失误处理结束之后将TCP链接保持在打开状态,以方便未来的HTTP请求可以重复使用现存的连接。持久连接会在不同事务之间保持打开状态,直到客户端或 服务器决定将其关闭为止。

持久连接的优点:

  1. 降低了时延和连接建立的开销
  2. 避免了慢启动的拥塞适应阶段,可以快速进行数据的传输

持久连接有两种类型:HTTP/1.0+ "keep-alive"和HTTP/1.1 "persistent"

keep-alive已经不再使用了,但是现在仍遗留了一些,这里快速看一下:

HTTP/1.1 "persistent"

HTTP/1.1 持久连接在默认情况下是激活的。除非特别指明,否则 HTTP/1.1 假定所有连接都是持久的。 如果想在事务处理结束后,将连接关闭,则必须在报文首部中显示添加Connection: close

进一步的优化!

HTTP/1.1允许在持久连接的基础上可选使用请求管道,即管道化连接。在响应到达之前,就可以将多条请求放入队列,然后一条一条发送,无需等待前一条的相应返回。

最后简单说下WebSocket

WebSocket是一个双向通信的协议,其有几个特点:

  • 1) 由于是双向通信,因此服务端可以做信息推送;
  • 2)一直保持连接状态,也就是持久连接;

WebSocket是建立在HTTP基础上的协议,因此连接的发起方仍然是客户端。