Google 様ご提案の新プロトコル SPDY

Webを高速化するための新プロトコルSPDYのホワイトペーパが,Googleから公開されている.

SPDY

HTTPでは基本的に,一つのコンテントを取得するたびにコネクションを作る.現在のwebでは,一つのページをレンダリングするために,多数の画像やらcssやらjavascriptのコンテントを読み込む必要があるので,複数のコネクションが必要になる.最近のwebブラウザだと一つのサーバに対して6つのコネクションを同時に張るが,これはサーバにとっても負荷になるし,コネクションを張るためのレイテンシは避けられない.

SPDYは,一つのTCP/SSLコネクションを使って,その上にHTTPのコネクションを実現する.コネクションを使い回すことができるので,サーバにも負荷はかかりにくいし,レイテンシも小さい.さらに,リクエストヘッダや,レスポンスヘッダに関しては圧縮を行うことで,通信量の削減を実現する.コンテントリクエスト時に,優先順位をつけることで,限られた帯域を有効に利用することもできる.

さらに,サーバプッシュなどというものも実装されている.これは,クライアントがリクエストする前に送りつけてしまう(!)というもの.たとえば,あるHTMLがリクエストされたら,そこから参照されているcssjavascriptはどうせリクエストされるだろうから,先に送っちゃえ,ということか.

実装と効果

SPDYを利用するには,サーバ側とクライアント側(ブラウザ)の双方が対応していなければならない.クライアントはchromeベースのクライアントを使っている.サーバ側にはオンメモリのWebサーバを実装して実験している.

いろいろ条件を変えて実験しているが,一番効果のある場合でおよそ60パーセントの速度向上(実行時間が半分以下)を得ている.かなり効果があるといえるだろう.

所感

技術的にはごく当たり前の話で,別に驚くようなことは何もない.が,これを現実に持ち出してくることができるのは,大量のサーバとブラウザを現実世界に持っているGoogle(とMS)ぐらいだろう.Chromeをプッシュしているのは,こういうブラウザ側の対応が必要なことができるからなのだなあ.
これがすべてのGoogle関連サイトとChromeに実装されたら,私も,Chromeに乗り換えるだろう.Google Mapとか,すごく高速化しそう.そうしたらFirefoxOperaも追従して,SPDYが標準技術になってしまうかもしれない.
やっぱり,もはやGoogleにいないとComputer Scienceの研究はできないのかもね.