WordPress Apache の HTTP/3 対応

重要:2025年12月29日現在、Apache を HTTP/3 で動作させることはできません。
HTTP/3 のメリット
前回、HTTP/2 対応を実装しましたが、今回は Apache への HTTP/3 の導入を行い、最速の WordPress を目指します。WordPress が稼働するウェブサーバーが HTTP/3 対応した場合のメリットは以下のとおりです。
- 最初のパケットが届くまでの待機時間が削減され、LCP が改善される
- 不安定な 4G/5G 回線でも安定してページが表示される
- Wi-Fi から 4G/5G に切り替わった時、通信を維持したままネットワーク切替が可能
技術的な理由部分は割愛しますが、HTTP/2 と HTTP/3 との違いは以下のとおりです。
| HTTP/2 | HTTP/3 | WordPressのメリット | |
| ベース技術 | TCP | QUIC/UDP | 接続確立の高速化 |
| エラー時の挙動 | 全リクエストが停止 | 該当ファイルのみ停止 | 不安定回線の表示維持 |
| 接続切替 | 切断 | 維持 | モバイル環境の高速化 |
| 表示速度 | 高速 | 超高速(特にモバイル) |
特にエラー時の挙動の効果が大きいと考えられます。つまり、モバイル回線でパケットロスなどにより一部の画像の読み込みに失敗・遅延が発生しても、他の CSS や JS の読み込みを止めることがありません。画像の遅延読み込み (Lazy loading) なしでも、モバイルにおける画像表示の高速化が期待できます。
Apache は HTTP/3 非対応
俄然ヤル気でこの記事を書いていたのですが、Apache における HTTP/3 対応は現在できないことがわかりました。
パッケージ版の Apache で HTTP/3 に対応していないことは分かっていましたので、以下をコンパイルして動作させるつもりで作業を進めました。
quictls:OpenSSL 互換の QUIC 互換ライブラリ
nghttp3:HTTP/3 フレーム層の制御を行うライブラリ
ngtcp2:QUIC プロトコル層の制御を行うライブラリ
Apache:httpd 本体
ところが、最新の Apache 2.4.66 のソースコードから HTTP/3 用のコードが削除されていて、configure をしている時にこれに気がつきました。公式サイトを確認したところ、HTTP/3 の実装は 2.5系 を目標に進められていることが分かりました。
HTTP/2 および HTTP/3(QUIC)実装の第一人者である Stefan Eissing 氏のコメントを要約すると「Apache 2.4系 の mod_h2 への HTTP/3 の統合は困難であり、さらに、HTTP/3 (QUIC) は UDP を使用するため、TCP 前提で設計されている Apache 2.4 のコア(MPM等)を大幅に改造しなければならない。」とのことで、2.4系 での HTTP/3 の開発を停止したようです。そのため、現在は 2.5系 で基盤から作り直す方針とのこと。
いくら configure が通っても h3 が作られないわけですね。コードに存在しないんですから。
ちなみに私も最初に参考にしていた ITtrip さんの HTTP/3 導入手順 は間違っていません。記事作成時点は 2.4系 向けに mod_h2 内で H3 を実験していた時期だからです。ソースコード内に HTTP/3 用のコードが存在していたはずです。
どうすればいいのか?
現時点で WordPress で安定して HTTP/3 を使用するには、以下の二つの選択肢があります。
ここまできて httpd を Nginx に代えるのは気に入りませんし、個人サイトで CDN は否定派のため、当サイトは Apache が正式に HTTP/3 を実装するまで待つこととしました。
