Keep-Alive

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

HTTP Keep-Alive 响应标头请求标头允许消息发送者提示连接的状态,还可以用来设置超时时长和最大请求数。

备注: 要使得 Keep-Alive 有效,消息必须包含 Connection: keep-alive 标头。

HTTP/1.0 默认在每次请求/响应交互后关闭连接,因此 HTTP/1.0 中的持久连接必须经过明确协商。一些客户端和服务器可能希望与以前的持久连接方式兼容,可以使用 Connection: keep-alive 请求标头来实现这一点。连接的其他参数可通过 Keep-Alive 标头请求。

警告: HTTP/2HTTP/3 禁止使用特定于连接的标头字段,如 ConnectionKeep-Alive。Chrome 浏览器和 Firefox 浏览器在 HTTP/2 响应中忽略了它们,但 Safari 浏览器符合 HTTP/2 规范要求,不会加载任何包含它们的响应。

标头类型 请求标头响应标头
禁止修改的标头

语法

http
Keep-Alive: <parameters>

指令

<parameters>

一系列用逗号隔开的参数,每一个参数由一个标识符和一个值构成,并使用等号('=')隔开。下述标识符是可用的:

  • timeout:指定了主机允许空闲连接保持打开状态的时长(以秒为单位的整数)。当主机没有接收或发送数据时,就认为连接是空闲的。主机可以保持连接超过 timeout 秒,但应该确保至少保持连接 timeout 秒。
  • max:在此连接关闭之前,可以发送的请求的最大值。在非管道连接中,除了 0 以外,这个值是被忽略的,因为需要在紧跟着的响应中发送新一次的请求。HTTP 管道连接则可以用它来限制管道的使用。

示例

包含 Keep-Alive 标头的响应示例:

http
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Aug 2016 15:23:13 GMT
Keep-Alive: timeout=5, max=200
Last-Modified: Mon, 25 Jul 2016 04:32:39 GMT
Server: Apache

(body)

规范

Specification
HTTP/1.1
# compatibility.with.http.1.0.persistent.connections

浏览器兼容性

BCD tables only load in the browser

参见