资源请求如何映射到HTTP / 2中的流中

问题描述 投票:0回答:1

我找不到此RFC,我想知道关于来自HTTP / 2客户端的资源请求如何映射到HTTP / 2流中有任何规则。

是一对一的,每个流代表一个资源请求的数据(例如,image,js,html),还是可以使用一个流来传输多个资源?

流优先级与流依赖关系有何不同(对我来说,两者都直接影响资源检索的最终顺序)?浏览器如何处理流和流依赖项是否有任何常规策略?

非常感谢您的帮助!

http2
1个回答
0
投票

我找不到此RFC,我想知道关于来自HTTP / 2客户端的资源请求如何映射到HTTP / 2流中有任何规则。

是一对一的,每个流代表一个资源请求的数据(例如,image,js,html),还是可以使用一个流来传输多个资源?

HTTP/2 RFC

通过将每个HTTP请求/响应交换与其自己的流相关联来实现请求的多路复用(第5节)。]

还有later

流标识符不能重复使用。

关于您的下一个问题:

流优先级与流依赖关系有何不同(对我来说,两者都直接影响资源检索的最终顺序)?

它们是相同优先级方案的一部分。依赖关系允许某些资源优先于其他资源发送,而优先级加权允许资源同时发送,但加权后会将更多的可用带宽分配给某些资源。

是否有任何一般策略,浏览器如何处理流和流依赖项?

它们都以相同的方式处理流,但是对依赖项的处理完全不同。

  • Chrome

    大量使用依赖关系,并在单个依赖关系上创建了一条长链,应在可能的情况下按顺序解决这些依赖关系。更高优先级的资源被添加到更远的链中。 Chrome不使用权重a。
  • Safari

  • 进行相反的操作,并发送所有没有依赖性但具有适当权重的请求。
  • Firefox

  • 使用权重和依赖关系创建一个复杂的依赖关系树。
  • Old Edge

  • 不进行优先级划分,因此使用HTTP / 2默认值,即具有相等权重的资源而没有依赖关系。 New Edge基于Chrome,因此可以做到这一点。

    人们普遍认为,Chrome通常会更好,但是在下载可以更好地并行下载的资源(例如图像-尤其是渐进式JPEG)时会受到影响。 Firefox在这里表现更好,但对于需要全部下载的资源(例如关键的CSS和JS)而言,Firefox的最佳性能则略差一些。 Safari唯一正常,而且通常两者兼有。而旧的Edge绝对是最糟糕的。这是一个关于事务状态的好话:https://m.youtube.com/watch?v=sgjxuhFQktE

对于HTTP / 3,他们正在考虑更改其复杂模型。好好谈谈:https://m.youtube.com/watch?v=nH4iRpFnf1c&feature=youtu.be

© www.soinside.com 2019 - 2024. All rights reserved.