【问题标题】:HTTP Keep-Alive HeaderHTTP Keep-Alive 标头
【发布时间】:2012-12-19 20:55:36
【问题描述】:

HTTP/1.1 服务器默认使用 Connection 标头的 Keep-Alive 设置。为什么 那么大多数浏览器是否包括 Connection: Keep-Alive 在他们的请求中,即使 他们知道目标服务器支持 HTTP/1.1 吗?

【问题讨论】:

    标签: http


    【解决方案1】:

    浏览器通常不会保留有关他们过去联系过的服务器的元数据缓存,即使他们这样做了,他们也必须考虑到具有不同版本 HTTP 的服务器场、中介(尤其是“透明”代理)等等。

    因此,他们做出了一个判断,即始终发送 Connection: keep-alive 会更容易,至少在连接中的第一个请求时是这样。

    【讨论】:

      【解决方案2】:

      这个问题没有意义。浏览器在提交请求并获得响应后才知道服务器支持什么。

      【讨论】:

      • 没错,浏览器客户端事先并不知道服务器是否支持keep-alive。但是,浏览器可以乐观的发出keep-alive请求,看看服务器是否支持。根据this answer,如果服务器支持keep-alive,它会尊重客户端的keep-alive请求,并返回Connection: keep-alive给客户端。否则,我的解释是服务器会返回Connection: close
      • @DavidRR 当然可以,而且确实可以,这就是问题所在,从关于“当他们知道目标服务器支持 HTTP/1.1”的部分开始感觉。
      • 明白。我认为您可以通过说:“浏览器不知道什么 HTTP 版本 服务器支持直到之后它已经提交了请求......因此,在收到服务器的回复之前,浏览器无法对服务器是否支持keep-alive做出任何假设。我认为明确解决也是有帮助的HTTP/1.1 标准是否要求支持keep-alive
      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 2013-07-10
      • 2016-04-03
      • 2017-11-22
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多