HTTPの教科書 9章

HTTPの教科書

HTTPのボトルネック

HTTPは以下の使用からボトルネックとなっている。 * 1つのコネクションで一つのリクエストしか、送ることができない。 * リクエストはクライアントからしか開始することができない。 * リクエスト、レスポンスヘッダーが圧縮されずに送られる。 * 冗長なヘッダーを送る。 * データの圧縮が強制でない。

様々なボトルネックの解消方法

Ajaxによる解決

XMLHttpRequestと呼ばれるAPIで、JavaScriptなどのスクリプト言語でサーバーとの通信を行うことができる。この技術を使うことでWebページの一部だけのデータを読むことができる。

Cometによる解決方法

Cometはサーバーのコンテンツに更新があった場合、クライアントからのリクエストを待たずにクライアント側にデータを送信するぎじゅつ。コンテンツをリアルタイムで更新することができる。

プロトコルレベルでの解決方法

Ajaxなどの技術はあるが、HTTPの制約を払おうとするとプロトコルレベルでの改善が必要。SPDYは現在のWebの速度を50%削減するすることを目標として開発が進められているプロトコルである。HTTPを完全に置き換えるのではなく、セッション層を新たに追加する。SPDYを使うことで、次のような機能をつけることができる。

多重化ストリーム

単一のTCPで、複数のHTTPリクエストを無制限に処理することができる。

リクエストの優先順位づけ

SPDYは無制限に並列に処理を行うことができるが、優先順位を割り当てることもできる。帯域幅が狭い処理がおそっくなることを防ぐためのもの。

HTTPヘッダの圧縮

リクエストとレスポンスのヘッダーを圧縮することができる

サーバープッシュ

サーバー側からクライアントにデータをプッシュする機能をサポート

サーバーヒント

サーバー側からクライアントに対して、リクエストすべきリソースを提案できる。

WebSocket

ブラウザーとサーバーの双方向の通信規格。一度コネクションを確立した後その後のすべての通信を専用プロトコルで行う。