2

HTTP/2 の立ち上げに関する記事を読んでいました。HTTP/2はSPDY(スピーディー)プロトコルをベースとしており、「ヘッダーフィールドの圧縮」と「多重化」を利用することで、HTTP/1.1よりも高速なブラウジング速度を実現できるとのことでした。これらの用語はどのように正確に機能しますか?

HTTP/1.1 ではリクエストが「次々に」処理されると信じるべきですか?

4

2 に答える 2

9

多重化

HTTP 1.1 では、待つだけで多くの時間が費やされます。ブラウザーは要求を送信し、応答が返ってくるのを待ってから、別の GET などを送信します。帯域幅の非効率的な使用。パイプラインを使用することもありますが、それも、リクエストが以前に行われたリクエストを待つ必要がある場合があるという問題があります。行頭ブロッキングの問題。

多重化を使用すると、実質的に待機はありませんが、ブラウザーは一度に何百ものものを要求するだけで、配信可能な順序で配信され、個々のストリームやオブジェクトが互いに待機する必要はありません。(優先順位付けとフロー制御により、それらを適切に制御できます。)

これは、待ち時間の長い接続で最も顕著になります。何ができるかを明確に示すデモについては、https://http2.golang.org/gophertiles?latency=1000 にある golang の gophertiles デモを参照してください(HTTP/2 対応のブラウザが必要です) 。

ヘッダー圧縮

さらに、HTTP/2 はヘッダー圧縮を提供するため、クライアントは TCP 接続の有効期間の早い段階でより多くの要求を絞り込むことができます。新しい TCP 接続の初期のスロースタート期間では、より多くのリクエストを詰め込んで、応答がより早く返されるようにすることが重要な場合があります。HTTP ヘッダーは、その性質上非常に反復的です。

サーバープッシュ

HTTP/2 サーバーは、クライアントがデータを要求する前に、クライアントがデータを要求したかのようにクライアントにデータを送信できます。サーバーが、クライアントもそれを望んでいる/必要としている可能性が高いと判断した場合、RTT の半分を節約できます。

于 2015-03-06T21:37:47.067 に答える
1

HTTP/2 以降、ヘッダーと HTTP 応答コンテンツの両方を圧縮できました。HTTP/1.1 では、コンテンツ (Content-Encoding ヘッダーで指定) に反してヘッダーが圧縮されることはありません。

多重化はサーバープッシュに関連しています。実際には、サーバーが HTML ページを送信するとき、同じ接続を使用して css や javascript ファイルなどの追加リソースをプッシュできます。HTML ページがこれらの追加のスクリプトをロードする必要がある場合、それらは既に送信されているため、それ以上のリクエストはサーバーに送信されません。

于 2015-02-25T13:43:13.547 に答える