我开始阅读关于Keep-Alive的内容,并考虑将其添加到我的网络服务器中,但当我跟踪http://google.com和http://stackoverflow.com时,我注意到他们并没有将此标题发送回客户端(超时是。)
为什么?我认为通常你想要杀掉闲置超过20秒左右的连接。我真的很好奇其他网站正在使用什么。也许他们最终会暂停空闲连接但只是不告诉客户他们会这样做(这看起来很奇怪)。
我做了一个“telnet google.com 80”并等了大约2分钟它从未超时然后我发出了一个“GET / HTTP / 1.1”而且等了一些比一堆随机垃圾一遍又一遍打字(不确定它们是否限制了标题大小,因此我认为你可以'OOM他们的服务器)。我终于打了两次输入然后回来了200 OK ....我的标题都没有形成良好但谷歌似乎并不关心(奇怪)。
感谢, 迪安
答案 0 :(得分:0)
在HTTP / 1.1及更高版本中,keep-alive是默认值,除非服务器明确发送“关闭”消息:http://tools.ietf.org/html/rfc7230#section-6.3,因此无需发送Connection: keep-alive
标头。
事实上,在HTTP / 2下你甚至不允许发送这个Close头,所以除了在处理请求后显式关闭连接之外不能使用keep-alives [使用GOAWAY消息] [1 ]
在HTTP / 1.1服务器下,可以在不告知客户端的情况下关闭连接。
因此Google和StackExchange正在使用keep-alives - 他们只是不在标题中做广告。