GoogleとStackOverflowのおかげで、通常のHTTPパイプラインとHTTP多重化(SPDYなど)の違いを理解できたと思います。次の図を作成して、3つの通常のHTTPリクエストに基づくパイプラインと多重化の違いを示します。
私の2つの質問は次のとおりです。
- 画像は正しいですか?
- パイプラインにヘッドオブラインブロッキングの問題がなければ、HTTP多重化と同じくらい高速になるというのは本当ですか?それとも私は追加の違いを逃しましたか?
GoogleとStackOverflowのおかげで、通常のHTTPパイプラインとHTTP多重化(SPDYなど)の違いを理解できたと思います。次の図を作成して、3つの通常のHTTPリクエストに基づくパイプラインと多重化の違いを示します。
私の2つの質問は次のとおりです。
間違いではありませんが、省略されている重要な側面があります。HTTPでは、他の要求を続行する前に、応答全体を配信する必要があります。図に示されているのは、SPDYを使用すると、最終的に「ヘッドオブライン」要件を破り、利用可能になったときに応答を提供できるという意味で正しいです。ただし、リクエストが完全に完了するのを待つ必要もありません。
2つのリクエストを想像してみてください。どちらもサイズが数KBです。各リクエストには複数のパケットがあり、それら[r1p1, r1p2]
を呼び出します[r2p1, r2p2]
。HTTPでは、pNが正確な順序で到着する必要があります。一方、SPDYでは次のことが可能です[r2p1, r1p1, r1p2, r2p2]
。
また、SPDYを使用すると、リクエストの優先順位を使用して、後でネットワークに到着した場合でも(他の5ダースの優れた機能の中で)、どのリクエストを優先する必要があるかをサーバーに示唆できます。