我的 curl 跟踪中的“* 将 bundle 标记为不支持多用途”是什么意思?

我的 curl 跟踪中的“* 将 bundle 标记为不支持多用途”是什么意思?

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

* Mark bundle as not supporting multiuse

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

答案1

https://github.com/curl/curl/blob/curl-7_82_0/lib/http.c#L4226

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

这是 HTTP/2 的一个功能。例如,参见 https://web.archive.org/web/20200328114206/https://www.cloudflare.com/website-optimization/http2/what-is-http2/

答案2

如果我理解正确的话,多用途==多路复用?如果是这样,那么这个解释就没问题。

多路复用可能是 HTTP/2 最显著的优势。HTTP/1.1 要求每个请求使用自己的 TCP 连接。相比之下,多路复用允许浏览器在单个 TCP 连接中包含多个请求。

多路复用图 1

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

复用图 2

HTTP/1.1 有点像在杂货店购买一件商品,带回家,再回到商店购买下一件需要的商品,然后重复这个过程,直到你的食品储藏室装满为止。多路复用为您提供了一个购物车,这样您就可以在一次旅行中挑选所需的所有东西。

相关内容