我被要求建立一个网站,其中一位联合开发人员告诉我,我需要包含 keep-alive 标头。
嗯,我读了很多相关内容,但我仍然有疑问。
当客户端进行多个连接时,打开的连接可以提高性能 请求网页内容,因为服务器可以返回 更快地满足每个请求的内容。否则,服务器必须 为每个请求打开一个新连接
看着
keep alive
标头(或用户发送 keep-alive)时,是否意味着 (E
,C
,B
) 保存仅用于我的会话的连接? 附注对于那些有兴趣的人:
单击此示例页面将返回保持活动标题
此信息保存在哪里(“此连接位于计算机
和服务器A
之间”)?F
TCP 连接通过源 IP 和端口以及目标 IP 和端口来识别。您的操作系统、所有中间会话感知设备和服务器的操作系统将通过此识别连接。
HTTP 采用请求-响应模式:客户端连接到服务器,执行请求并获取响应。如果没有保持活动状态,与 HTTP 服务器的连接将在每次响应后关闭。通过 HTTP keep-alive,您可以保持底层 TCP 连接打开,直到满足某些条件。
这允许在单个 TCP 连接上存在多个请求-响应对,从而消除了一些 TCP 相对较慢的连接启动。
当IIS(F)发送keep-alive头(或者用户发送keep-alive)时,是否意味着(E,C,B)保存连接
不。路由器不需要记住会话。事实上,属于同一个 TCP 会话的多个 TCP 数据包不需要全部经过相同的路由器 - 这是由 TCP 管理的。路由器只是选择最佳的IP路径并转发数据包。保持活动状态仅适用于客户端、服务器和任何其他中间会话感知设备。
这仅适用于我的会话?
这是否意味着其他人无法使用该连接
这就是 TCP 连接的意图:它是仅适用于这两方的端到端连接。
如果是这样 - 是否意味着保持活动标头 - 减少重叠连接用户的数量?
定义“重叠连接”。请参阅HTTP持久连接了解一些优点和缺点,例如:
如果是这样,该连接会保存多久? (换句话说,如果我设置保持活动-“保持”到什么时候?)
典型的保持活动响应如下所示:
Keep-Alive: timeout=15, max=100
请参阅 超文本传输协议 (HTTP) Keep-Alive 标头(HTTP/2 草案,其中对 keep-alive 标头的解释比 2616 和 2086 更详细):
主机将
timeout
参数的值设置为主机允许空闲连接在关闭之前保持打开状态的时间。如果主机没有发送或接收数据,则连接处于空闲状态。
max
参数指示客户端将发出的最大请求数,或者服务器允许在持久连接上发出的最大请求数。一旦发送了指定数量的请求和响应,包含该参数的主机就可以关闭连接。
但是,服务器可以在任意时间或任意数量的请求后关闭连接(只要它返回当前请求的响应)。如何实现取决于您的 HTTP 服务器。