web-dev-qa-db-ja.com

HTTP / 1.1パイプラインとHTTP / 2多重化の違いは何ですか?

それは、HTTP 1.1で行頭ブロッキングの問題を引き起こす要求の順序でクライアントに応答を行う必要があるためですか?

各要求に正確に等しい時間がかかる場合、行頭ブロッキングとHTTP 1.1パイプラインはなく、HTTP/2多重化と同じように動作しますか?

(HTTP/2リクエストにはリクエストの優先度がないとしましょう。ヘッダーの圧縮やバイナリなど、HTTP/2の他の変更は無視してください。)

25
prasun

HTTP/1.1パイプライン処理では、要求を完全に、要求された順序で返す必要があります。

HTTP/2では、リクエストの応答をチャンクに分割し、混在した方法で返すことができるため、行頭ブロッキングを回避できます。

さらに、HTTP/1.1パイプライン処理が実際に実行されることはなく、ブラウザとサーバーのサポートは制限されています( https://en.m.wikipedia.org/wiki/HTTP_pipelining を参照)。

しかし、はい、理論的には、それらは類似しており、したがって、同様のパフォーマンス上の利点を提供します。 HTTP/2は、これより優れた、より完全な機能を備え、サポートされているバージョンです。

29
Barry Pollard

パイプラインなしのHTTP/1.1: TCP接続を介した各HTTP要求は、次の要求を行う前に応答する必要があります。

パイプラインを使用したHTTP/1.1: TCP接続を介した各HTTP要求は、前の要求の応答が返されるのを待たずに、すぐに行うことができます。応答は、同じ注文。

HTTP/2多重化: TCP接続を介した各HTTP要求は、前の応答が返されるのを待たずにすぐに実行できます。応答は任意の順序で返される場合があります。

51
Elijah Lynn

詳しく説明すると、どちらも同様のパフォーマンス向上を提供します。

ただし、パイプライン処理(またはダブルバッファリング)は、バグの多いプロキシと、場合によってはバグのあるサーバーによって妨げられます。そのため、ブラウザはサポートを停止しました。

解決策は、完全に新しいプロトコルHTTP/2を使用することです。これには、順不同の戻り、ヘッダー圧縮、サーバープッシュなどのいくつかの追加機能がありますが、それらがどの程度の改善を提供するかは不明です。重要な問題はバグです。

1
Tuntable