HTTPボディとは
HTTPヘッダーの後ろについているのが、実際に送受信するデータの本体となる部分です。
リクエストの場合は主にPOSTメソッドなどでデータの送信に利用し、レスポンスの際はHTMLなどが入ります。
HTTP1.0と1.1の違い
HTTP1.0について詳しく知る必要はありませんが、HTTP1.1から追加されたTCP接続を維持するための仕組みKeep-Aliveについて知るために、HTTP1.0と1.1の違いについて紹介したいと思います。
まずは、HTTP1.0と1.1の通信について表した以下の図を見てください。
この図のHTTP1.0(左)、1.1(右)ではそれぞれ2回のHTTPリクエスト/レスポンスを行っています。
HTTP1.0の場合、TCP接続の確立・解放が2度行われているので、無駄があるように感じます。
これに対してHTTP1.1では持続的接続(Keep-Alive)が可能になったことにより、リクエスト/レスポンスの際の無駄なTCP接続の再確立を減らすことができるようになりました。
またHTTP1.1では、1つのIPアドレスでホストごとに返すコンテンツを制御できるバーチャルホストが追加されたことも大きな違いです。
HTTP1.1のブラウザ別同時接続数
また、HTTP1.1には同時接続数という、もう一つのポイントがあります。同時接続数とは、ブラウザがサーバーにリクエストを送った際に、同時にデータのやり取りを行える最大接続数を表します。
多ければ多いほど良いのですが、この同時接続数の制限は接続ホストごとに設けられています。本来、HTTPの同時接続数は「2」が推薦されていますが、最近のブラウザは「6」としているようです。
以下が実際に調べた最近のブラウザの同時接続数です。
IE6 | IE7 | IE8 | IE9 | Firefox | Chrome | Safari |
---|---|---|---|---|---|---|
2 | 2 | 6 | 6 | 6 | 6 | 6 |
同時接続数が2本の場合と6本の場合、どのように違うのか道路の車線数で表現してみます。
IE6,7は車線が2本しかないので、それほど多くの車をゴール地点に移動させることができません。
IE8,9,Firefox,Chrome,Safariは車線が6本なので、IE6,7に比べ3倍の車をゴールに移動させることができますね。このように、同時接続数の制限がWebサイトのパフォーマンスに大きく影響します。
ここでポイントになるのは、1ホスト(主にサーバーを指す)ごとに接続数が制限されている点。レスポンスを返すホストを分散させれば、同時接続数を増やせることになります。具体的な方法は次回以降で紹介したいと思います。