0

HTTP/2 仕様の push-promise と他のいくつかのチュートリアルについて読んだことがあり、概念としてのアイデアがあります。

SO でここを読んだことがあります。したがって、プッシュ プロミスをアプリケーションに組み込む必要がある場合、これを行うのに理想的な場所はどこですか。Action メソッドからビューにリダイレクトする直前にする必要がありますか? または、ビュー内のスクリプトで? 私が検索した限り、例は見つかりませんでした。

誰かが実際のコードに実装した経験を共有してください。両方のプロトコルをサポートする必要がある場合、オーバーヘッドのように思えますか?

また、IIS 10 を使用している場合、両方のプロトコルをサポートするために必要な構成変更はありますか? [私が読んだ限りでは、そうする必要はありません。しかし、常に何人かの専門家に注意を払う方が良い.]

4

1 に答える 1

2

したがって、プッシュ プロミスをアプリケーションに組み込む必要がある場合、これを行うのに理想的な場所はどこですか。Action メソッドからビューにリダイレクトする直前にする必要がありますか? または、ビュー内のスクリプトで?

実験中にコントローラ アクション メソッドで実行しましたが、共通のリソースがある場合は、パイプライン内のより基本的な/共有された場所に移動することをお勧めします。HttpResponseオブジェクトにアクセスできる場所ならどこでも機能するはずです。hereで述べたように、リクエスト ヘッダー ( accept-encoding (圧縮) など)によってプッシュする内容が異なる場合は、HTTP メソッドとヘッダーを受け取るPushPromise オーバーロードを使用することをお勧めします。

両方のプロトコルをサポートしなければならない場合、オーバーヘッドのように思えますか?

また、IIS 10 を使用している場合、両方のプロトコルをサポートするために必要な構成変更はありますか?

両方のプロトコルをサポートするために明示的に何かを行う必要はありません。IIS が処理します。Microsoftの David So によると、「クライアントとサーバーの構成が HTTP/2 をサポートしている場合、IIS は HTTP/2 を使用します (または、不可能な場合は HTTP/1.1 にフォールバックします)」。これはサーバー プッシュを使用している場合でも当てはまります。プッシュが許可されているかどうかを心配する必要があります。」

ちなみに、Windows Server 2016 で HTTP/2 を無効にしたい場合は、レジストリを介して無効にできます。

IIS ログをチェックすることに加えて、David So が提案したように、HTTP/2 が使用されていることを確認するには、Chrome の [ネットワーク] タブでヘッダー行 (名前、ステータス、タイプなど) を右クリックし、[プロトコル] をオフにします。HTTP/2 応答の「h2」が表示されます。Chrome HTTP/2 内部ページ (chrome://net-internals/#http2) を参照し、ドメインの [プッシュ済み] 列と [プッシュ済みおよび要求済み] 列を確認することで、プッシュ プロミスが機能していることを確認できます。

于 2016-08-03T23:03:49.043 に答える