Yoast SEO プラグインで有名な Yoast のブログに、Joost de Valk 氏が HTTP/2 に関する記事を投稿したのが目に留まったのでこの記事を翻訳しました。
HTTP/2 時代におけるパフォーマンスの最適化
Webの基盤に革命が起こっています。あなたのブラウザがウェブサイトに接続するためのプロトコルである HTTP には、HTTP/2 という新しいバージョンがあります。これはまだ十分に普及されているわけではありませんが、WEB 開発者にとってはパフォーマンスの最適化の方法が変わるものです。この短い記事では、HTTP/2 におけるパフォーマンス最適化のベストプラクティスとその理由を説明します。
何が変わった?
HTTP/2 において知っておくべきもっとも重要なことは、それぞれのファイルに対して個別の HTTP 接続を必要としないことです。このことは、パフォーマンスの最適化の方法を大きく変更します。HTTP/1 及び HTTP1/.1 では、JS や CSS、画像ファイルごとに別々の接続を繰り返していたので、これらを結合してブラウザとサーバー間の接続を減らす工夫が必要でした。HTTP/2 の世界では、この種の最適化は不要となり、場合によっては逆効果となる可能性もあります。
HTTP/2はすでに使用できますか?
答えはかなり単純です。はい。あなたのサイトが HTTPS で動作しているなら、現在の全ての主要なブラウザは HTTP/2 をサポートしています。あなたやあなたのホスティング会社は、HTTP/2 をサポートできるようにサーバーの設定を変更する必要がありますが、それだけです。古いブラウザの中にはそれを使用できないものもありますが、それでもあなたのサイトは引き続きそのブラウザで動作します。
HTTP/2 を使用することができるのは理解できましたが、私は使用するべきですか?
はい、HTTP/2 を使用するべきです。それは昔ながらの HTTP/1 よりもずっと高速で、もしあなたが HTTP/2 を設定すれば、あなたのサイトへの訪問者の大半は大きな利益を得ることができます。
変更されたパフォーマンスのベストプラクティス
次のパフォーマンス上のベストプラクティスは、HTTP/2 では不要となりました。
- CSS ファイルや JavaScript ファイルの連結
HTTP リクエストの数を減らすことはもはや問題ではないので、これを行う必要はありません。 - イメージスプライト
イメージスプライトは、いくつかの小さな画像を1つの画像に結合して、HTTP リクエストの回数を減らすための方法です。これはかなりのオーバーヘッドを伴う厄介な作業で、HTTP/2 ではその必要性がなくなります。 - ドメインシャーディング
これは一般的なテクニックではありませんが、重いサイトでは CDN 等を利用して複数のドメインからファイルを送信していました。これは HTTP/1 の時代では、ブラウザが同時に8つの接続しかできないために、より多くのファイルを並行してダウンロードさせるための方法です。HTTP/2 では、一度の HTTP リクエストで並列ダウンロードが可能なため、この方法は逆効果になります。複数のドメインに分散することで、複数の名前解決等が発生し、サイトの速度が低下します。(Steve Souders、WEBパフォーマンス界のゴッドファーザーは、2013年の時点でドメインシャーディングが短命であることを予言していました。) - CSS と JS のインライン化
小さな CSS と JS をインライン展開することは、Google が積極的に推進して来た手法です。しかし CSS と JS がインラインであると、適切にキャッシュすることができません。HTTP2 では、小さなファイルのリクエストに余分なオーバーヘッドがないため、このベストプラクティスを廃止することができます。
Google PageSpeed と HTTP/2
残念ながら、Google の PageSpeed ツールや他の多くの WEB パフォーマンステストツールでは、HTTP/2 の採用がかなり遅いです。彼らはガイドラインを変更する必要があります。A simple HTTP/2.0 test tool を使用すれば、あなたのサイトが HTTP/2 を使用しているかどうかを確認できます。サイトスピードに関するいくつかの提案については議論する必要があるでしょう。彼らのドキュメンテーションにはネットワークラウンドトリップについて言及されていますが、HTTP/2 においてはこれは問題にはなりません。
もちろん Google にもこのことを認識している人はいます。2015年の Ilya Gregorik によるこのプレゼンテーションはそのことを物語っています。