资源请求如何映射到 HTTP/2 中的流
How resource requests maps into streams in HTTP/2
我找不到这个 RFC,我想知道是否有关于如何将来自 HTTP/2 客户端的资源请求映射到 HTTP/2 流的规则。
是一对一的,每个流代表一个资源请求的数据(例如图像,js,html)还是可以使用一个流传输多个资源?
流先验与流依赖有何不同(对我来说两者都直接影响资源检索的最终顺序)?
浏览器如何处理流和流依赖性是否有任何一般策略?
非常感谢您的帮助!
I could not found this RFC, and I'm wondering are there any rules regarding how resource requests from HTTP/2 Client are mapped into HTTP/2 streams.
Is it one-to-one, where each stream represents data for one resource request (e.g. image, js, html) or it is possible to use one stream to transfer multiple resources ?
来自HTTP/2 RFC:
Multiplexing of requests is achieved by having each HTTP request/response exchange associated with its own stream (Section 5).
还有later:
Stream identifiers cannot be reused.
关于你的下一个问题:
How stream priories differs from stream dependencies (for me both are directly influencing final order of resource retrieval) ?
它们属于同一优先级方案。依赖关系允许优先于其他资源发送某些资源,而优先级加权允许同时发送资源但加权以将更多可用带宽分配给某些资源。
Are there any general strategies how browsers are handling streams and streams dependencies ?
它们都以相同的方式处理流,但处理依赖关系的方式完全不同。
Chrome 大量使用依赖项并在单个依赖项上创建长链,应尽可能按顺序解决。更高优先级的资源被添加到链的更上游。 Chrome不使用权重a.
Safari 做相反的事情并发送所有没有依赖但具有适当权重的请求。
Firefox 使用加权和依赖关系创建复杂的依赖关系树。
Old Edge 没有优先级排序,因此使用 HTTP/2 默认的没有依赖性的同等权重资源。 New Edge 基于 Chrome,因此遵循
人们普遍认为 Chrome 通常更好,但在下载最好并行下载的资源(例如图像 - 尤其是渐进式 JPEG)时会受到影响。 Firefox 在这方面做得更好,但对于需要完整下载的资源(例如关键 CSS 和 JS)来说,它的优化稍差。 Safari 唯一还可以,而且通常比两者都差。老 Edge 绝对是最糟糕的。这是一个很好的状态讨论:https://m.youtube.com/watch?v=sgjxuhFQktE
HTTP/3 他们正在考虑改变他们的复杂模型。在这里好好谈谈:https://m.youtube.com/watch?v=nH4iRpFnf1c&feature=youtu.be
我找不到这个 RFC,我想知道是否有关于如何将来自 HTTP/2 客户端的资源请求映射到 HTTP/2 流的规则。
是一对一的,每个流代表一个资源请求的数据(例如图像,js,html)还是可以使用一个流传输多个资源?
流先验与流依赖有何不同(对我来说两者都直接影响资源检索的最终顺序)? 浏览器如何处理流和流依赖性是否有任何一般策略?
非常感谢您的帮助!
I could not found this RFC, and I'm wondering are there any rules regarding how resource requests from HTTP/2 Client are mapped into HTTP/2 streams.
Is it one-to-one, where each stream represents data for one resource request (e.g. image, js, html) or it is possible to use one stream to transfer multiple resources ?
来自HTTP/2 RFC:
Multiplexing of requests is achieved by having each HTTP request/response exchange associated with its own stream (Section 5).
还有later:
Stream identifiers cannot be reused.
关于你的下一个问题:
How stream priories differs from stream dependencies (for me both are directly influencing final order of resource retrieval) ?
它们属于同一优先级方案。依赖关系允许优先于其他资源发送某些资源,而优先级加权允许同时发送资源但加权以将更多可用带宽分配给某些资源。
Are there any general strategies how browsers are handling streams and streams dependencies ?
它们都以相同的方式处理流,但处理依赖关系的方式完全不同。
Chrome 大量使用依赖项并在单个依赖项上创建长链,应尽可能按顺序解决。更高优先级的资源被添加到链的更上游。 Chrome不使用权重a.
Safari 做相反的事情并发送所有没有依赖但具有适当权重的请求。
Firefox 使用加权和依赖关系创建复杂的依赖关系树。
Old Edge 没有优先级排序,因此使用 HTTP/2 默认的没有依赖性的同等权重资源。 New Edge 基于 Chrome,因此遵循
人们普遍认为 Chrome 通常更好,但在下载最好并行下载的资源(例如图像 - 尤其是渐进式 JPEG)时会受到影响。 Firefox 在这方面做得更好,但对于需要完整下载的资源(例如关键 CSS 和 JS)来说,它的优化稍差。 Safari 唯一还可以,而且通常比两者都差。老 Edge 绝对是最糟糕的。这是一个很好的状态讨论:https://m.youtube.com/watch?v=sgjxuhFQktE
HTTP/3 他们正在考虑改变他们的复杂模型。在这里好好谈谈:https://m.youtube.com/watch?v=nH4iRpFnf1c&feature=youtu.be