HTTP 保持活动超时

Posted

技术标签:

【中文标题】HTTP 保持活动超时【英文标题】:HTTP keep-alive timeout 【发布时间】:2013-10-09 21:58:53 【问题描述】:

我可以指定 HTTP 超时 还是 服务器 强加一个值? 例如,如果我这样做:

telnet my.server.net 80
Trying X.X.X.X...
Connected to my.server.net.
Escape character is '^]'.
GET /homepage.html HTTP/1.0
Connection: keep-alive
Host: my.server.net

HTTP/1.1 200 OK
Date: Thu, 03 Oct 2013 09:05:28 GMT
Server: Apache
Last-Modified: Wed, 15 Sep 2010 14:45:31 GMT
ETag: "1af210b-7b-4904d6196d8c0"
Accept-Ranges: bytes
Content-Length: 123
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
[...]

行:

Keep-Alive: timeout=15, max=100

...指定 最大超时时间为 100 秒,对吗?如何设置这样的值?

【问题讨论】:

【参考方案1】:

客户端无法指定超时,是服务器配置决定了最大超时值。额外的 Keep-Alive 标头可以通知客户端服务器愿意保持连接打开多长时间(timeout=N 值)以及在服务器强制关闭之前您可以通过同一连接执行多少请求(max=M)的连接。

另见Proper use of KeepAlive in Apache Htaccess

【讨论】:

【参考方案2】:

是的,您可以指定超时,但服务器没有义务使用该值。如果服务器配置了不同的超时时间,它将返回自己的 Keep-Alive 标头。

Keep-Alive 标头是提供信息的逐跳标头 关于持久连接。客户端和服务器都可以 独立提供信息。 (Hypertext Transfer Protocol (HTTP) Keep-Alive Header)

【讨论】:

以上是关于HTTP 保持活动超时的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 与 flask-socketio python。如何设置套接字保持活动/超时

如何在Linux中增加SSH连接超时的时间

Worklight 在用户注销时保持 HTTP 请求处于活动状态

保持 ASP.NET 会话打开/活动

HttpClient连接池的连接保持超时和失效机制

HttpClient连接池的连接保持超时和失效机制