HTTPの教科書 9章
HTTPの教科書
HTTPのボトルネック
HTTPは以下の使用からボトルネックとなっている。 * 1つのコネクションで一つのリクエストしか、送ることができない。 * リクエストはクライアントからしか開始することができない。 * リクエスト、レスポンスヘッダーが圧縮されずに送られる。 * 冗長なヘッダーを送る。 * データの圧縮が強制でない。
様々なボトルネックの解消方法
Ajaxによる解決
XMLHttpRequestと呼ばれるAPIで、JavaScriptなどのスクリプト言語でサーバーとの通信を行うことができる。この技術を使うことでWebページの一部だけのデータを読むことができる。
Cometによる解決方法
Cometはサーバーのコンテンツに更新があった場合、クライアントからのリクエストを待たずにクライアント側にデータを送信するぎじゅつ。コンテンツをリアルタイムで更新することができる。
プロトコルレベルでの解決方法
Ajaxなどの技術はあるが、HTTPの制約を払おうとするとプロトコルレベルでの改善が必要。SPDYは現在のWebの速度を50%削減するすることを目標として開発が進められているプロトコルである。HTTPを完全に置き換えるのではなく、セッション層を新たに追加する。SPDYを使うことで、次のような機能をつけることができる。
多重化ストリーム
単一のTCPで、複数のHTTPリクエストを無制限に処理することができる。
リクエストの優先順位づけ
SPDYは無制限に並列に処理を行うことができるが、優先順位を割り当てることもできる。帯域幅が狭い処理がおそっくなることを防ぐためのもの。
HTTPヘッダの圧縮
リクエストとレスポンスのヘッダーを圧縮することができる
サーバープッシュ
サーバー側からクライアントにデータをプッシュする機能をサポート
サーバーヒント
サーバー側からクライアントに対して、リクエストすべきリソースを提案できる。