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

迷笛

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

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

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

非常感谢您的帮助!

巴里·波拉德

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

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

来自HTTP/2 RFC

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

以及后来

流标识符不能重复使用。

至于你接下来的问题:

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

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

浏览器如何处理流和流依赖项是否有任何通用策略?

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

  • 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 NodeJS 中执行传出的 HTTP2 请求

如何在Nginx中禁用http2

如何在Go中通过http://发出仅HTTP2的请求?

如何在Node.js HTTP2中获取请求正文?

如何将http请求响应映射到TypeScript中定义的对象

如何通过纯HTTP在C#Kestrel Web服务器中启用http2?

如何在okhttp或java 11 httpclient之类的http2客户端中获取Max_concurrent_streams的数量和流ID

如何使用流将2D IntArray过滤和映射到Set中

如何使用Apache 2.4.23在CentOs Server中实现http2(h2)?

使用Chrome扩展程序中的AJAX请求检测URL是否支持HTTP2?

有什么方法可以在Go中启用对http2请求和响应的详细跟踪?

HTTP2请求不遵循JMeter 5.0中的重定向

http2请求返回错误请求

Http2中的GoAway框架是什么,如何将其链接到重定向?

如何在Apache 2.4.18 Server中实现不带SSL的http2

如何使用外部 ssl 卸载在 HTTP2 中配置 Jetty

服务器如何识别HTTP2中不同客户端的头部压缩

Java的 - 让使用多个请求HTTP2

通过 HTTP2 批处理请求

如何将同一类中的 2 个不同方法映射到 Spring Boot 中的 GET 请求?

HTTP2 期望流按照順序打開

通过HTTP2的websocket是否还会在流中复用?

http2中的半关闭是什么?http2中的流状态下本地和远程之间的区别是什么?

如何配置spring的RestTemplate发出http2请求?

HTTP2:如何表示对它的支持?HTTP2是否有“备用协议”?

如何使用nodejs模块http2将http2与ExpressJS集成?

不同流中的HTTP请求响应

如何使用 Jetty 嵌入服务器在 Spring Cloud Zuul 过滤器中检索 HTTP2 帧设置?

HttpServletRequest的属性字段如何映射到原始HTTP请求?