【发布时间】:2012-12-19 20:55:36
【问题描述】:
HTTP/1.1 服务器默认使用 Connection 标头的 Keep-Alive 设置。为什么 那么大多数浏览器是否包括 Connection: Keep-Alive 在他们的请求中,即使 他们知道目标服务器支持 HTTP/1.1 吗?
【问题讨论】:
标签: http
HTTP/1.1 服务器默认使用 Connection 标头的 Keep-Alive 设置。为什么 那么大多数浏览器是否包括 Connection: Keep-Alive 在他们的请求中,即使 他们知道目标服务器支持 HTTP/1.1 吗?
【问题讨论】:
标签: http
浏览器通常不会保留有关他们过去联系过的服务器的元数据缓存,即使他们这样做了,他们也必须考虑到具有不同版本 HTTP 的服务器场、中介(尤其是“透明”代理)等等。
因此,他们做出了一个判断,即始终发送 Connection: keep-alive 会更容易,至少在连接中的第一个请求时是这样。
【讨论】:
这个问题没有意义。浏览器在提交请求并获得响应后才知道服务器支持什么。
【讨论】:
keep-alive。但是,浏览器可以乐观的发出keep-alive请求,看看服务器是否支持。根据this answer,如果服务器支持keep-alive,它会尊重客户端的keep-alive请求,并返回Connection: keep-alive给客户端。否则,我的解释是服务器会返回Connection: close。
keep-alive做出任何假设。我认为明确解决也是有帮助的HTTP/1.1 标准是否要求支持keep-alive。