HTTP/2

プロトコル & 標準
HTTP/1.1より高性能で、マルチプレキシングとヘッダー圧縮を導入したHTTPの大規模改訂版です。
← 用語集に戻る

HTTP/2とは?

HTTP/2 は HTTP プロトコル(RFC 7540 として標準化される)の大きなリビジョンで、バイナリフラミング、マルチプレックス、ヘッダの圧縮、サーバが HTTP/1.1 を超える Web パフォーマンスを飛躍的に向上させます。

HTTP/2 対 HTTP/1.1

特徴:HTTP/1.1のHTTP/2
フォーマットテキストベースバイナリ
コネクション複数の(ホストごとの6-8)シングルマルチプレックス
リクエスト処理シーケンシャル並列ストリーム
ヘッダーの圧縮なしHPACKの圧縮
サーバープッシュご利用いただけませんサポート
優先順位付けなし優先順位を上げる

HTTP/2の仕組み

HTTP/1.1 (Head-of-Line Blocking):

Connection 1: Request A ──────────► Response A

Connection 2: Request B ──────────► Response B

Connection 3: Request C ──────────► Response C

(Multiple connections, sequential per connection)

HTTP/2 (Multiplexing):

Single Connection:

├── Stream 1: Request A ──► Response A

├── Stream 2: Request B ──► Response B

├── Stream 3: Request C ──► Response C

└── All interleaved on same connection

主な特長

バイナリフラムレイヤー

HTTP/2 Frame Structure:

┌─────────────────────────────────────┐

│ Length (24 bits) │

├─────────────────────────────────────┤

│ Type (8 bits) │ Flags (8 bits) │

├─────────────────────────────────────┤

│ Stream Identifier (32 bits) │

├─────────────────────────────────────┤

│ Frame Payload (variable) │

└─────────────────────────────────────┘

HPACKヘッダーの圧縮

スケナリオHTTP/1.1 ヘッダーHTTP/2 ヘッダー
最初のリクエスト〜800バイト〜800バイト
必須リクエスト~800バイトごとに~20-50バイト(インデックス)

ストリーム優先順位付け

Priority Tree:

Root (connection)

├── CSS (weight: 256, high priority)

├── JavaScript (weight: 220)

└── Images (weight: 110, lower priority)

サーバー要件

サーバーHTTP/2 サポート
ログイン1.9.5以上
パスワード2.4.17+ (mod http2)
ノード.js8.4+ (ネイティブ)
アイスWindows 10/サーバー 2016+

性能の利点

ベストプラクティス

1. TLSを有効にして下さい:HTTP/2は実質的にHTTPSを要求します(ブラウザはそれを強制します)

2. ドメインシャーディングを削減: 複数のドメインがパフォーマンスを傷つけるようになりました

3. ファイルを隠す: マルチプレックス化により、冗長化が不要

4. サーバーの押しを注意深く使用して下さい: 重要なリソースのみをプッシュする

5. モニターのパフォーマンス:HTTP/2が特定のユースケースを改善します

HTTP/2 は、ネットワーク接続の効率的な利用により、ほとんどのウェブサイトのパフォーマンス向上を実現します。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。