我找不到此RFC,我想知道关于来自HTTP / 2客户端的资源请求如何映射到HTTP / 2流中有任何规则。
是一对一的,每个流代表一个资源请求的数据(例如,image,js,html),还是可以使用一个流来传输多个资源?
流优先级与流依赖关系有何不同(对我来说,两者都直接影响资源检索的最终顺序)?浏览器如何处理流和流依赖项是否有任何常规策略?
非常感谢您的帮助!
我找不到此RFC,我想知道关于来自HTTP / 2客户端的资源请求如何映射到HTTP / 2流中有任何规则。
是一对一的,每个流代表一个资源请求的数据(例如,image,js,html),还是可以使用一个流来传输多个资源?
通过将每个HTTP请求/响应交换与其自己的流相关联来实现请求的多路复用(第5节)。]
还有later:
流标识符不能重复使用。
关于您的下一个问题:
流优先级与流依赖关系有何不同(对我来说,两者都直接影响资源检索的最终顺序)?
它们是相同优先级方案的一部分。依赖关系允许某些资源优先于其他资源发送,而优先级加权允许资源同时发送,但加权后会将更多的可用带宽分配给某些资源。
是否有任何一般策略,浏览器如何处理流和流依赖项?
它们都以相同的方式处理流,但是对依赖项的处理完全不同。
Chrome
大量使用依赖关系,并在单个依赖关系上创建了一条长链,应在可能的情况下按顺序解决这些依赖关系。更高优先级的资源被添加到更远的链中。 Chrome不使用权重a。Safari
Firefox
Old Edge
人们普遍认为,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