【问题标题】:why http2 use prioritization over stream instead of requests?为什么 http2 使用流而不是请求的优先级?
【发布时间】:2022-01-13 19:58:17
【问题描述】:

“流、连接、消息、帧”的概念构成了http2的主要设计。让我困惑的是流的概念。

起初,流的概念在我看来只是对帧流的虚拟描述。但是后来我发现 http2 的优先级是针对流而不是消息/请求。为什么会这样,我认为客户端和服务器端的应用程序更关心并直接控制请求或消息,而不是这些消息驻留在哪个流中。

请参阅“流优先级”: https://developers.google.com/web/fundamentals/performance/http2#design_and_technical_goals

【问题讨论】:

  • 我发现http2的优先级是针对流的请提供一些资源/链接来支持这一点。
  • @kiner_shah 在问题中完成
  • @IMSoP 在我发布的链接中,多条消息的帧共享一个流。
  • @IMSoP 哦,是的,那是有道理的。非常感谢!
  • 评论扩展为答案。

标签: http2


【解决方案1】:

HTTP/2 中的流对应于构成请求的所有帧及其对应的响应,因此处理优先级和流控制的自然位置也是如此。 “这个请求的响应应该有高优先级”和“这个请求的流和它的响应应该有高优先级”这句话是等价的。

在您引用的文档中提到了携带“一条或多条消息”的流,但我认为这只是该文档中的草率语言。如果您查看section 8.1 of the spec,它会显示“客户端在新流上发送 HTTP 请求”和“HTTP 请求/响应交换完全消耗单个流。”

该流中可能还有其他,例如PUSH_PROMISE,但这些不是实际的请求和响应;服务器推送的响应数据通过新流发送,然后可以赋予不同的优先级。

【讨论】:

  • 谢谢,我想我已经了解了H2的基本思想
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
  • 2011-05-14
相关资源
最近更新 更多