在我的 curl 跟踪中,`* 将包标记为不支持多用途` 是什么意思?

Mar*_*ger 17 http curl

当我对我创建的某个 docker 容器执行 curl -v 时,我得到:

* Mark bundle as not supporting multiuse

这是什么意思?它在哪里记录?

Mar*_*ner 15

来自https://github.com/curl/curl/blob/master/lib/http.c#L3611

if(conn->httpversion < 20) {
   conn->bundle->multiuse = BUNDLE_NO_MULTIUSE;
   infof(data, "Mark bundle as not supporting multiuse\n");
}
Run Code Online (Sandbox Code Playgroud)

这是 HTTP/2 的一个特性。参见,例如https://www.cloudflare.com/website-optimization/http2/what-is-http2/

  • 这就像微软的“功能”吗?提供的解释毫无用处,文档仅将其作为 #24 放在错误消息列表中,而没有解释它的来源。新手在 cURL 或任何命令中显示“将捆绑包标记为不支持多用途”时,到目前为止都找不到任何帮助...... (9认同)
  • 我完全同意。这个答案是没有用的。特别是没有任何进一步信息的 http2 的通用链接确实没有用。 (5认同)

小智 5

如果我理解正确的话,多重使用==多路复用?\n如果是这样,那么这个解释就可以了。

\n
\n

多路复用可能是 HTTP/2 最显着的好处。HTTP/1.1 要求每个请求使用自己的 TCP 连接。相反,多路复用允许浏览器在单个 TCP 连接中包含多个请求。

\n
\n

复用图1

\n
\n

问题是,浏览器在任何给定时间只能打开有限数量的 TCP 连接。对于 HTTP/1.1,这意味着浏览器一次只能加载一个资源\xe2\x80\x94网页中的每个资源都会按顺序发送回浏览器。多路复用允许浏览器并行请求所有这些资源。这会带来显着的性能提升。

\n
\n

复用图2

\n
\n

HTTP/1.1 有点像在杂货店买了一件商品,把它带回家,再回到商店购买您需要的下一件商品,然后重复直到您的食品储藏室装满为止。Multiplex 为您提供了一个购物车,这样您就可以在一次旅行中买到您需要的一切。

\n
\n