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