web-dev-qa-db-ja.com

HTTPパイプラインとSPDYでのHTTP多重化の違い

GoogleとStack Overflowのおかげで、通常のHTTPパイプライン化とHTTP多重化(SPDYなど)の違いを理解したと思うので、3つの通常のHTTPリクエストに基づくパイプライン化と多重化の違いを示すために、次の図を作成しました。

enter image description here

私の2つの質問は次のとおりです。

  1. 画像は正しいですか?
  2. パイプライン処理で head-of-lineブロッキング問題 が発生しない場合、HTTP多重化と同じくらい高速になるのは本当ですか?または、私は追加の違いを見逃しましたか?
52
qualle

間違いではありませんが、省略している重要な側面があります。 HTTPでは、他の要求を続行する前に応答全体を配信する必要があります。 SPDYを使用すると、「ヘッドオブライン」の要件を最終的に破り、応答が利用可能になったときに応答を配信できるという意味で、図に示した内容は正しいです。ただし、リクエストが完全に完了するのを待つ必要もありません。

両方とも数KBのサイズの2つの要求を想像してください。各要求には複数のパケットがあり、それらを[r1p1, r1p2]および[r2p1, r2p2]と呼びます。 HTTPでは、pNが正確な順序で到着する必要があります。一方、SPDYを使用すると、次のことが可能になります:[r2p1, r1p1, r1p2, r2p2]

また、SPDYを使用すると、要求の優先度を使用して、後で要求が優先される必要があるサーバーを示唆できます(他のダースの優れた機能の中でも特に)。

49
igrigorik