【问题标题】:Can I do something similar to pipelining on HTTP 2?我可以在 HTTP 2 上做类似于流水线的事情吗?
【发布时间】:2020-03-08 07:50:18
【问题描述】:

流水线是 HTTP/1.1 中的一种技术,在该技术中,多个请求在保持活动连接上一次发送而无需等待响应。然后服务器按顺序返回响应,而无需等待发送响应和接收下一个请求之间的往返时间。

HTTP/2 添加了一个称为多路复用的功能,它同样允许客户端一次发送多个请求。但是,在这种情况下,服务器可以一次发送所有响应。

在没有服务器控制的情况下,在使用 HTTP/2 时,我能否实现类似于流水线的功能(即一次按顺序接收响应,且响应之间没有延迟)?

这在下载许多大文件、没有太多可用内存来缓冲几个部分完成的响应时很有用。

【问题讨论】:

    标签: http http2 http-pipelining


    【解决方案1】:

    在不控制服务器的情况下,我能否在使用 HTTP/2 时实现类似于流水线的功能(即一次按顺序接收响应,响应之间没有延迟)?

    不,你不能,除非服务器配合(例如,服务器可以配置为按顺序处理请求或类似的东西)。

    附带说明,虽然在 HTTP/1.1 中允许请求管道,但它一直被认为是一个坏主意,因此与所有主要实现无关(即browsers don't do it,服务器并不真正支持它等.)。 主要问题是error handling 和错误的代理服务器。

    HTTP/2 允许客户端设置请求的优先级,以便按优先级顺序处理请求。 但是,此功能是可选的,服务器可能不会实现它,因此您需要再次仔细选择/配置服务器以获得您想要的行为。

    如果您可以稍微控制服务器端,对于 HTTP/1.1 和 HTTP/2,更好的解决方案是在单个请求中向服务器询问所有文件,并让服务器以多部分响应进行回复.

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多