レンタルサーバーをどれにするか決める時に、ブログ表示の速度を基準に選ぶ方は多いのではないでしょうか。
サーバーの仕様や機能を見ていて、高速表示機能一覧で掲載されている「HTTP/2」とは何かと思ったことはありませんか?
この記事では、「HTTP/2」とはどのようなものなのか初心者でもわかりやすく紹介していきます。
HTTP/2とは
HTTPの変遷
「HTTP」とは、ネットワーク上でクライアント(サービスを受ける側)とサーバー(サービスを提供する側)間でコミュニケーションを取るための約束事のことで、データ送信の手順や形式が決められています。
「HTTP」は、1991年に「HTTP/0.9」が公開されてから2015年に「HTTP/2」が公開されるまで転送方式の変化により通信速度が向上しています。
1991年 HTTP/0.9公開
・クライアントが取得したいコンテンツのリクエストをWebサーバーに送信し、Webサーバーはそれに対応するコンテンツを返す「GETメソッド方式」
・画像等は転送できずHTMLファイルのみ転送可能
1996年 HTTP/1.0公開
・クライアントからURLで指定したプログラムなどに対してHTTP通信でデータを送信する「POSTメソッド方式」
・「GETメソッド」がHTTP通信のヘッダーのみ送信されるのに対して、「POSTメソッド」ではリクエスト内容をボディ部に含めることでURLに内容が現われない仕様
・画像ファイルが追加で送受信可能に
1999年 HTTP/1.1公開
・1つのサーバーで複数のドメインを運用する「バーチャルホスト」の搭載
・複数のHTTPリクエストを前の転送が完了する前に次のリクエストを転送できる「パイプライン機能」が追加
・再接続時に前回の接続を参照する「Keep-Alive機能」による通信の高速化
2015年 HTTP/2公開
・「ストリーム」という概念を取り入れ、HTTP/1.1までは複数のリクエストに対して前のリクエストが完了するまで次のリクエストを転送できなかったが、同時に処理が可能に
・ヘッダーの圧縮や転送するコンテンツの優先度設定などの機能追加
HTTP/2とは
HTTP/2(Hypertext Transfer Protocol version 2)は、従来のHTTPと互換性がありながらそれまでの問題点を改善したもので、より少ない通信量でより高速に通信を行えるようになっており、現在では主なWebブラウザとWebサーバーのほとんどがHTTP/2に対応しています。
HTTP/1.1までとHTTP/2の違いは以下のようなものです。
ストリームの導入
HTTP/1.1までは、1つのリクエストに対して1つの応答を順番に返す仕様であったために、同時に複数のデータの伝送路(TCPコネクション)が必要でした。
そのため、①のリクエストに対して①の応答が帰ってくるまで②のリクエストを出すことが出来ず、リクエストの数が多くなるほどWebサイトの表示速度が低下する問題があり、HTTP/2では、この問題を解消するために「ストリーム」と呼ばれる仮想的な通信経路を作って、1つのデータの伝送路(TCPコネクション)に対して2つ以上の画像を同時に読み込むなどの複数のリクエストを処理できるようなりました。
「ストリーム」はそれぞれ独立しているため、レスポンスに時間がかかるリクエストが含まれていても他のレスポンスに影響を与えることがなく、さらに優先度を設定する機能が追加されたことでサーバーに対して優先度を指定して受け取ることが可能です。
ヘッダーの圧縮
HTTP/1.1では通信のリクエストを行う度に、ブラウザの種類やOSの情報、クッキー(情報を一時的に保存する仕組み)などが含まれる「HTTPヘッダー」を送信する必要がありました。
HTTP/2では、HPACKというヘッダー圧縮方式を使用することで一度送信したヘッダーを再送信せずに差分のみの送信が可能になり、サーバーの負荷を軽減できるようになりました。
フレーム(バイナリ形式のメッセージ)の使用
HTTP/1.1ではテキスト(文字)形式のメッセージでしたが、HTTP/2ではフレームというバイナリ(テキスト以外のデータ)形式のメッセージをやりとりします。
フレームは使用用途に応じて10種類のタイプが定義されています。
フレーム名 | タイプ番号 | 概要 |
DATA | 0 | POSTリクエストのデータや、HTTPレスポンスのデータなどHTTPボディの転送に使用 |
HEADERS | 1 | HTTPリクエストヘッダーやHTTPレスポンスヘッダーなどヘッダーの送信に使用 |
PRIORITY | 2 | ストリームの優先度変更に使用 |
RST_STREAM | 3 | エラーでストリームを終了するのに使用 |
SETTING | 4 | 並列ストリーム上限など、データの伝送路に関するパラメータのやりとりに使用 |
PUSH_PROMISE | 5 | サーバープッシュに用いるストリームの予約に使用 |
PING | 6 | データの伝送路の維持確認に使用 |
GOAWAY | 7 | データの伝送路の切断に使用 |
WINDOW_UPDATE | 8 | データの送受信の管理に使用 |
CONTINUATION | 9 | 続けて送信するHTTPヘッダーデータ送信に使用 |
サーバープッシュ
HTTP/1.1では、リクエストが受信されてからHTTPレスポンスを送信していました。
HTTP/2ではサーバープッシュという機能によって、HTTPリクエストがなくてもHTTPレスポンスを送信することができます。
サーバー側が後でクライアントが必要になると予想できるコンテンツを先に送信することで、クライアントは関連するリクエストを何度もする必要が無くなり待ち時間が少なくなりました。
HTTP/2に対応したレンタルサーバーを利用するメリット
HTTP/2が向いているブログ
HTTP/2では、通信手段の向上によりWebページの読み込み速度が上がりましたが、特に下記のようなブログがHTTP/2の高速化の恩恵を感じやすいです。
・「HTTP/2」はデータを暗号化して送受信{TLS(Transport Layer Security)}するHTTPSの通信上でしか使用できないため、HTTPSに対応したブログ
・画像や動画などのコンテンツが多く通信量が多い中~大規模のブログ(小規模でも恩恵はあるが体感しづらい)
・「HTTP/2」は同一ドメインのサーバーに対して複数のリクエストを処理するため、1つのドメインで構成されているブログ
HTTP/2に対応したレンタルサーバーを利用するメリット
レンタルサーバーでHTTP/2のメリットを生かすためにはブログを「HTTPS」に暗号化する必要があり、「HTTPS」にすることをSSL化といいます。
主なレンタルサーバー会社には「独自SSL」があり、サーバーを契約する際に有効化します。
「独自SSL」によって暗号化していない場合は、インターネット上の通信情報を第三者に盗聴のように知られてしまう可能性があります。
特に、通信情報がクレジットカード番号や個人情報の場合、どんなリスクに巻き込まれるかわかりません。
ブログやサイトを運用していくにあたってSSL化することは必須で、Google検索ランキングでも上位になる要因の1つとなっています。
あとがき
いかがでしたでしょうか。
この記事では、レンタルサーバーの高速化機能一覧に掲載されている「HTTP/2」について紹介しました。
2020年には「HTTP/3」も公開されています。
2022年4月現在では、レンタルサーバーで使われているのは「HTTP/2」が主流のようですが機能は年々向上しているため、「HTTP/3」が使われることが多くなってきた時には「HTTP/3」についても記事にする予定です。