9

http2 RST_STREAM の新機能について読みました:

HTTP/2 は RST_STREAM フレームを追加して、クライアントが気が変わることを可能にします。ブラウザーがページから移動した場合、またはユーザーがダウンロードをキャンセルした場合、その帯域幅をすべて無駄にすることなく、新しい接続を開く必要がなくなります。

これを行うにはどうすればよいですか?ブラウザでこれを行うにはどうすればよいですか?コードに変更はありますか?

4

1 に答える 1

17

ブラウザはリクエストを開始した後、ユーザーが別の場所に移動するか、キャンセルすることで、気が変わります。

HTTP/1.1 では、応答コンテンツのダウンロードを回避する唯一の選択肢は、接続を閉じることでした。これは、クライアントが要求を中止するというこの意図をサーバーに伝える方法がないためです。接続を閉じることが方法です。

HTTP/2 では、クライアントがリクエストを中止したい場合、RST_STREAM を送信します。サーバーは RST_STREAM を受信すると、クライアントへの DATA フレームの送信を停止し、それによって応答 (またはダウンロード) を停止します。接続は他のリクエストに引き続き使用でき、中止されたリクエスト/レスポンスと並行していたリクエスト/レスポンスは進行し続ける可能性があります。

通常、アプリケーションは何もする必要がなく、RST_STREAM を認識しません。これはすべて、ブラウザーとサーバーの実装によって行われます。

RST_STREAM がクライアントからサーバーに移動するまでに、リクエストのコンテンツ全体が転送中であり、クライアントに到着して破棄される可能性があります。ただし、応答コンテンツが大きい場合、RST_STREAM を送信すると、応答コンテンツ全体が送信される前にサーバーに到着する可能性が高くなるため、帯域幅が節約されます。

于 2015-03-01T17:37:31.067 に答える