なぜHTTP2?

最近、当社の公式ウェブサイトは、HTTP2に元HTTP1.1からアップグレードされている、と我々はまだHTTP2無知のフロントエンド開発されているが、これを変更し、なぜ私はHTTP2での知識を補完するので、わかりません。

HTTP1.1 HTTP1.0に比べて利点は何ですか?

  1. キャッシュが
    主であれば修飾-ためでのHTTP1.0のヘッダーに使用され、キャッシュの決意を有効期限標準を行う、
    場合非改変-のでHTTP1.1それは、より多くのキャッシュ制御戦略例えばエンティティタグを導入した場合、 -match、もし-なしマッチ、およびヘッド制御キャッシュキャッシュポリシーのより多くの選択肢。

  2. 使用帯域幅の最適化とネットワーク接続
    クライアントがオブジェクトの一部のみを必要とし、サーバは、オブジェクト全体がここで取得置き、HTTPの機能をサポートしていないなどのHTTP1.0は、いくつかの廃棄物の帯域幅の現象があり、HTTP1 .1ので十分な帯域幅および接続を利用するために、現像液の選択の自由を容易にするために、要求されたリソース、すなわち、リターンコードが206(部分コンテンツ)のある部分のみを許容範囲リクエストヘッダのヘッダフィールドを、導入しました。

  3. エラー通知管理
    エラーステータス応答コードでHTTP1.1 24に新しい、など409(競合)は、リソース要求とリソース競合の現在の状態を表し、410は(ゴーン)永久サーバ上のリソースを表します削除されました。

  4. Hostヘッダの処理
    、各サーバにHTTP1.0で固有のIPアドレスを結合すると考えられては、そのため、メッセージ内の要求URLは、ホスト名(ホスト名)を介して取得できませんでした。しかし、仮想メインフレーム技術の発展に伴い、そこに単一の物理サーバ上で複数の仮想ホスト(マルチホームWebサーバー)も、彼らは、単一のIPアドレスを共有することができます。
    HTTP1.1要求とHostヘッダフィールドをサポートする必要があり、応答メッセージ、リクエストメッセージがない場合はHostヘッダフィールドレポートエラー(400不正な要求)。

  5. 長い接続
    HTTP 1.1サポート長い接続(PersistentConnection)およびTCP接続における要求パイプライン(パイプライン)プロセスは、還元および接続確立の遅延と消費、デフォルトHTTP1.1を閉じ、HTTP要求および応答を複数送信してもよいです。オープン接続:キープアライブ、ある程度への接続を作成するには、各要求のHTTP1.0の欠点を補うために。

HTTP2 HTTP1.1に比べて利点は何ですか?

  1. バイナリフレーミング
    データのHTTP / 2バイナリ伝送フォーマットではなく、HTTP 1.xのテキスト形式、バイナリプロトコルは、より効率的に解決します。HTTP / 2では、単一の接続を介してすべてのトラフィックは、同じドメイン名で行われ、接続双方向データストリームは、任意の数を有していてもよいです。各データストリームは、メッセージの形態、および1つまたは複数のフレームによって順番にメッセージで送信されます。再び組み立てることができるフレームヘッダのストリーム識別子に従って、複数フレーム間順から送信することができます。
  2. 多重化
    、元の配列と、ブロッキングのメカニズムを交換する多重化。すべての要求は、同時接続は、TCPを介して行われています。HTTP 1.xでは、複数の同時要求をしたい場合、あなたは複数のTCP接続を使用しなければならない、とリソースを制御するために、ブラウザ、単一のドメイン名について6-8 TCP接続要求の制限があるでしょう
  3. サーバープッシュ
    サーバーは、他のリソースを送信するときに、ブラウザが所定の位置にそれを解析しを待たずに、HTMLページをプッシュするためのイニシアチブを取り、その要求の応答を開始することができます。
  4. ヘッダー圧縮
    HTTP 1.1要求サイズ、彼らはACKで応答を待っているので、初期のTCPウィンドウサイズよりも時には大きい、大きくなっては、後に送り返すことを続けることができます。HPACK転送を使用してHTTP / 2メッセージヘッダ圧縮(具体的には圧縮形式のHTTP / 2ヘッド設計)は、トラフィック・メッセージ・ヘッダー占有ネットワークを節約することが可能です。HTTP / 1.xのすべての要求は、冗長なヘッダを大量に運ぶでしょう、多くの帯域幅を無駄にしました。

多重化でHTTP2.0長い接続多重化とHTTP1.X違いは何ですか?

  1. HTTP / 1.0リクエスト - レスポンス、接続が確立され、オフに実行します。接続を確立するためのすべての要求を、
  2. HTTP / 1.1 Pipelingソリューションは、要求がシングルスレッドのプロセスのシリアル番号をキューに登録されている、後続の要求は、タイムアウト要求があった場合に実行する機会を得るために前で待機している要求され、後続の要求のみをブロックすることができ、何の道を返しませんこれは、一般的にラインブロッキングのヘッドとして知られています。
  3. HTTP / 2リクエストの複数の接続上で並行して同時に行うことができます。真剣に時間のかかる作業を要求し、それが他の接続の正常な実行には影響しません。

nginxの設定http2.0

HTTP2.0は実際にサポートすることができますが、非HTTPS、今クロムなどの主流のブラウザは、Firefoxはまだ最初にもHTTP2.0またはHTTPSをアップグレードするためにアップグレードするためにして唯一のサポートHTTP2.0プロトコルは、TLSの展開に基づいて表しています。
HTTP2にHTTPSベースの設定は非常に簡単です、
オープンHTTP / 2は、nginxの1.9.5以降を必要とし、nginxの上バージョンのOpenSSL 1.0.2以上が必要です。
ビューopensslのバージョン

openss version
OpenSSL 1.0.2k-fips  26 Jan 2017

nginxの設定を変更し
た構成のサーバが増加する段落にHTTP2を聞いた後。

server{
    listen  443 ssl http2;
    ···
}

リロードnginxのnginxの-s再起動して
、あなたがHTTP2は、ブラウザで有効になっているかどうかを確認することができ、この点を

参考資料

  1. 差HTTP1.0、HTTP1.1とHTTP2.0
  2. nginxの上の設定HTTP / 2簡潔なガイド

おすすめ

転載: www.cnblogs.com/jesse131/p/11529931.html