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。如何设置套接字保持活动/超时