- 一个web页面上的大部分请求,通常指向同一个站点(站点局部性)
- TCP具有慢启动的特性
因此, HTTP/1.1允许HTTP设备在失误处理结束之后将TCP链接保持在打开状态,以方便未来的HTTP请求可以重复使用现存的连接。持久连接会在不同事务之间保持打开状态,直到客户端或 服务器决定将其关闭为止。
持久连接的优点:
- 降低了时延和连接建立的开销
- 避免了慢启动的拥塞适应阶段,可以快速进行数据的传输
持久连接有两种类型: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基础上的协议,因此连接的发起方仍然是客户端。