【えいちてぃーてぃーぴーつー】

HTTP/2 とは?

💡 「一本の道」を複数の荷物が同時に走れる高速道路
📌 このページのポイント
HTTP/2の改善点 HTTP/1.1(逐次処理) Client Server リクエスト1 ⏳ ブロッキング待ち リクエスト2 ⏳ ブロッキング待ち リクエスト3 遅い(順番待ち) HTTP/2(多重化) Client Server 単一コネクション ストリーム1(並列) ストリーム2(並列) ストリーム3(並列) 高速(同時並行)
HTTP/2の改善点
ひよこ ひよこ

HTTP/2って何が変わったの?

ペンギン先生 ペンギン先生

HTTP/1.1では1つの接続で1つのリクエストしか同時に処理できなかったんだ。ページを読み込むとき画像やCSSを6本・8本と並列で取得するためにブラウザは複数のTCP接続を張っていた。HTTP/2では1本の接続の中で複数のやりとりを同時に行えるようになって、接続の無駄が大きく減ったんだよ。

ひよこ ひよこ

サーバープッシュって何?

ペンギン先生 ペンギン先生

HTMLを返すとき「どうせこのCSSJSも必要だよね」とサーバーが勝手に先送りしてくれる機能だよ。クライアントがHTMLを解析してリソースをリクエストする前に届くから速くなる、という狙いだね。

ひよこ ひよこ

じゃあ全部のサイトがHTTP/2に変えれば速くなるね!

ペンギン先生 ペンギン先生

実際かなり普及しているよ。でもサーバープッシュは「何を先送りすべきか」の判断が難しく、かえってキャッシュ済みのリソースを再送してしまうことがあって、むしろ邪魔になることも。Chrome 106からはサーバープッシュのサポートが廃止されたくらい、期待通りには機能しにくかったんだ。HTTP/2の多重化は十分効果があるけど、ネットワーク品質が悪い環境ではTCPの仕組み上「ヘッドオブラインブロッキング」という問題が残っていて、それを解決したのがUDP上のHTTP/3なんだよ。

ひよこ ひよこ

HTTP/3ってもう使われてるの?

ペンギン先生 ペンギン先生

GoogleCloudflare、Metaなど大手はすでに対応しているよ。HTTP/3TCPの代わりにQUICUDP上のプロトコル)を使って、パケットロス時でも他のストリームが止まらない仕組みを実現しているんだ。モバイル環境のようにWi-Fiと4Gを切り替える場面でも、接続が途切れにくくなるメリットがあるよ。

ひよこ ひよこ

自分のサイトがHTTP/2対応してるかどうかってどうやって確認するの?

ペンギン先生 ペンギン先生

ChromeのDevToolsでNetworkタブを開いて「Protocol」列を確認すると「h2」と表示されていればHTTP/2だよ。ほとんどのモダンなWebサーバーやCDNCloudflareAWS CloudFrontなど)はHTTP/2をデフォルトでサポートしている。ただしHTTP/2はTLSHTTPS)が実質必須だから、まだHTTPのままのサイトはSSL証明書の導入が先決だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
HTTP/2」って出てきたら「HTTP/1.1を高速化した、同時通信と圧縮が得意な新しい通信規格だな」と思えばだいたいOK!
📖 おまけ:英語の意味
「HTTP/2(HyperText Transfer Protocol version 2)」 = ハイパーテキスト転送プロトコル バージョン2
💬 Googleが開発したSPDYプロトコルをベースに標準化されたよ。現在はさらに進化したHTTP/3も登場しているんだ
← 用語集にもどる