Http

* Mark bundle as not support multiuse 在我的 curl 跟踪中是什麼意思?

  • March 19, 2022

當我對我創建的某個 docker 容器執行 curl -v 時,我得到:

* Mark bundle as not supporting multiuse

這是什麼意思?它記錄在哪裡?

來自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://www.cloudflare.com/website-optimization/http2/what-is-http2/

如果我理解正確,multiuse == 多路復用?如果是這樣,那麼這個解釋很好。

多路復用可能是 HTTP/2 最顯著的好處。HTTP/1.1 要求每個請求都使用自己的 TCP 連接。相比之下,多路復用允許瀏覽器在單個 TCP 連接中包含多個請求。

復用圖1

問題是,瀏覽器在任何給定時間只能打開有限數量的 TCP 連接。對於 HTTP/1.1,這意味著瀏覽器一次只能載入一個資源——網頁中的每個資產都按順序發送回瀏覽器。多路復用允許瀏覽器並行請求所有這些資產。這會帶來顯著的性能提升。

復用圖2

HTTP/1.1 有點像在雜貨店購買一件商品,然後將其帶回家,然後回到商店購買您需要的下一件商品,然後不斷重複,直到您的食品儲藏室存滿為止。多路復用為您提供了一個購物車,因此您可以一次購買所需的一切。

引用自:https://serverfault.com/questions/1003112