HTTP/2とは、インターネットの通信プロトコルが刷新され、1つのストリーム対して並列転送、優先度設定が出来、高速化している。
Web表示の高速化を実現するSPDYとHTTP/2.0の標準化
http://www.iij.ad.jp/company/development/tech/activities/spdy/
HTTP/2 入門(こっちの説明のほうが分かりやすい)
http://techblog.yahoo.co.jp/infrastructure/http2/introduction_to_http2/
ヘッダ圧縮
- 従来のHTTP/1.1のリクエストのHTTPヘッダには同じデータが毎回転送されていて、無駄が多かったという。そこで、それらのヘッダをSPDYでは、gzipで圧縮して転送しようとしたが、それを利用したCRIMEという攻撃手法が見つかったため、この圧縮は無効化するか、あるいは、圧縮率を下げる必要が生じてしまったという。そこで、HTTP/2では、HPACKという一度転送したヘッダを基本的に再送信すること無く新たな送信が必要なヘッダのみを転送することで転送量を削減したという。
サーバプッシュ
- CSSファイルと画像ファイルのリンクが含まれたHTMLページを見ると、従来のHTTP/1.1では、HTMLファイルをリクエストして、CSSファイルをリクエスト、画像ファイルをリクエストという形でサーバにいちいち頼んでいたのが、HTTP/2では、HTMLファイルを読み込むと、そのHTMLファイルに含まれているリンクから、そのHTMLの転送にCSSファイルや画像ファイルも一緒に必要だねということで、新たにリクエストされること無く、サーバがまとめて転送してくれる。これによって、余計なリクエストを省くことが出来、転送レスポンスが改善する。
ストリームの多重化(並列転送)
- HTTP/2では、ヘッダの圧縮(差分転送)やサーバプッシュで転送に必要な余計なデータやリクエストを削減した上で、1つのストリームに複数のフレームを転送できます。これは、サーバプッシュの例を見ると分かる通り、複数のリクエストを省いた後、サーバから複数のデータが転送されてくる。これを1つのストリーム(接続)でまとめて処理することで、高速化を図っています。
ストリーム優先度
- クライアントがサーバに対してリクエストの優先度を上げる事ができる。ページを読み込む際にCSSファイルを先に読み込みたい時、CSSファイルの優先度を上げておけば、先に読み込まれる可能性が高くなります。リアルタイム系の処理に有効な機能に見える。
まとめ
- HTTP/2では、ヘッダの差分転送やサーバプッシュ、ストリームの多重化、優先度の指定をすることで、転送パフォーマンスのアップを図っている。とにかくリクエスト回数や、それを転送するのに必要なデータを減らして、転送レイテンシを下げ、まとめて転送する努力をしている事が伺える。そうすることでウェブページが従来よりも高速に表示されるようになる。というわけで、HTTP/2は、より効率化されたHTTPプロトコルといえる。