HTTP/2の概要
HTTP/2の概要については、さくらのナレッジにて非常に詳しい解説を掲載しています。
普及が進む「HTTP/2」の仕組みとメリットとは | さくらのナレッジ
エンジニア向けで難しいこちらの内容を簡単に要約すると、現行のHTTP/1.1と比較した場合、HTTP/2ではブラウザとサーバーの間の通信効率が改善され、Webページの表示速度が向上すると書かれています。
通信の効率化というとわかりにくいかもしれませんが、例えばHTTP/1.1ではブラウザ側からサーバーに「これらの画像ファイルをください!」とリクエストした場合、サーバー側では「わかりました。ご希望の画像ファイルを順番に送ります!」と送られてきたリクエスト順に画像ファイル送っていました。
ここでポイントとなるのは、同時にリクエストを受けられる最大数です。HTTP/1.1では最大同時に数個のリクエストしか受けられなかったため、容量の大きいファイルが続くとそこで詰まってしまい、後から来たリクエストがどんなに小さい容量だったとしても、先のリクエストが終わるまで返せないということがありました。
HTTP/2では、同時に受けられるリクエストが数十個以上となったため、リクエストが詰まって待ちが生じるという状況が発生しづらくなっています。リクエストのやり取りの改善がされるだけで送受信されるファイルの大きさ自体は変わらない、ということも覚えておきましょう。
HTTP/2のメリット
HTTP/2は通信効率の改善であり、有効化したからといって一概にサイトの表示速度が格段に向上するというものではありません。そのため恩恵を受けやすいサイト、受けにくいサイトが出てきます。
恩恵を受けやすいサイト
- 画像などのファイルがたくさんある
- 細かいCSSやJavaScriptを大量に読み込む必要がある
- サイトのドメイン内にファイルが集約されている
恩恵を受けにくいサイト
- テキスト主体でコンテンツの少ないシンプルなサイト
- 動画閲覧ページのように容量の大きいファイルはあるが、少ないファイル数で構成されている
- 自サイトではなくCDN(content delivery network)など複数の別ドメインにファイルが分散されている
- SSL化されていない(そもそも恩恵を受けられません)
このようにサーバーとブラウザの間でのやり取りが多いサイトの場合、HTTP/2の恩恵を受けられることがわかります。逆にやり取りの少ない=構成ファイルの少ないサイトでは、あまり効果を感じられない可能性が高いです。
HTTP/2のデメリット
HTTP/2を利用することで大きなデメリットはありませんが、前提としてHTTPS通信が必須となりますので、サイトをhttps化していない場合はSSL証明書を導入する必要があります。また、一部通信がhttps化されていても意味が無く、サイト全体をhttps化する「常時SSL化」が必要になります。
※常時SSL化についてはこちらの記事にて詳しく解説しています。
また、サイトをhttps化することでHTTP通信では必要のなかった「ハンドシェイク」という処理が行われます。簡単に説明するとHTTP通信には必要なかったHTTPS通信を行うための準備が発生し、通信が遅延する要因になっています。
しかし、サイトのhttps化が必須になりつつある時代です。https化におけるこういった問題は、もはやデメリットや手間とは言えない時代になっています。あえてデメリットを挙げるならば、HTTP/2自体の導入のハードルがやや高いというのがデメリットかもしれません。以降のセクションでは、ぜひ導入してみたい!という方向けに、サーバー環境別の導入方法について解説いたします。
導入方法
レンタルサーバーの場合
レンタルサーバー(管理者権限のないサーバー)をお使いの場合はレンタルサーバー側の仕様になりますので、エンドユーザ自身でHTTP/2を利用可能な状態にすることはできません。各社のサーバー仕様を確認してみてください。「さくらのレンタルサーバ」では2018年3月から全プランで順次HTTP/2への対応を進めます。現在SSL機能をお使いの方は自動的にHTTP/2が有効化されます。
VPSやクラウドなどの管理者権限のあるサーバーの場合
管理者権限を与えられており、まるごとサーバーを管理できるタイプのサービスでは、エンドユーザごとに任意に設定が可能になっています。
具体的には、Apache、Nginx、IISといったWebサーバーでの設定が必要となります。バージョンやパッケージによってデフォルトでONになっていることもありますが、OS標準のパッケージ管理ソフトに入っていない場合は少しハードルが高くなります。
さくらのナレッジで解説記事が公開されていますので、ぜひ参考にして、ご自身の環境に合わせた設定をしてみてください。
まとめ
高速化というキーワードが独り歩きしがちなHTTP/2ですが、単純に対応すればどんな環境でも速くなるというわけではありません。また導入にもそれなりのハードルがあります。HTTP/2を導入することで一般的にサイトのスピードが10~20%ほど高速化すると言われており、効果の見えやすいデモサイトなども公開されていますが、蓋を開けてみると思った通りになっていないこともあります。サイトをhttps化するついでにHTTP/2を導入して少しだけ速くしてみよう、というような期待感で導入するのが良いかもしれません。