理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

Firefox 11 に搭載された SPDY

3/13 に Firefox 11 がリリースされ、ようやくぼくも Firefox 11 にアップデートしましたが、どうやらこの ver. では SPDY 対応が謳われているようです。

さて、SPDY というと 2010 年にちょっとだけ騒がれたプロトコルですが、みなさん覚えておいででしょうか。
ぼくはもちろん忘れていたし、忘れていたというか見た覚えもない。別件で mod_speedup とかあったこと思い出したくらいです。

では SPDY とは何だったのか。Googleホワイトペーパーから読み取っていきましょう。

SPDY (SPeeDY)

SPDY はウェブページの読み込み速度を改善するためのプロトコルです。動くのはアプリケーション層ですが、より具体的にはセッション層。その目標は

  1. 1 TCP コネクション上で複数の HTTP リクエストを並列して動作させる
  2. 不要なヘッダを削除し、かつ、ヘッダを圧縮することで、HTTP に使用される帯域を減らす
  3. 実装が容易でサーバの効率の良いプロトコルにする
  4. SSL 透過にする
  5. サーバは待つだけじゃなく、通信をサーバ側からはじめられるようにする

と置かれています。

高速化についてはアプリケーション層ではなく TCP 層で行う提案も多くありますが、非常に困難な deploy の問題が絡むので、 HTTP をどうにかしようということのようです。
基本的には、1 TCP コネクション上で同時平行したリクエストが処理されるようになるので、TCP コネクションを新たに張る負荷も減りますし、伝送効率も上がります。リクエストの優先度を付けることもできるようですが、それよりも効きそうだなと思ったのは HTTP ヘッダ圧縮。SPDY では、リクエストとレスポンスのデータを圧縮するようで、特に最近は POST だったり Cookie だったりと上りのトラフィックも大きいので、かなり効果があるのではないでしょうか。
Google の実験では、最大で約 90 % ほどヘッダが圧縮され、上り 375 Kbps の DSL リンクを想定(?)した実験では、最大 1,000 ms を越える読み込み時間の改善が見られたそうです。

On the lower-bandwidth DSL link, in which the upload link is only 375 Kbps, request header compression in particular, led to significant page load time improvements for certain sites (i.e. those that issued large number of resource requests). We found a reduction of 45 - 1142 ms in page load time simply due to header compression.

で効果の程は

Firefox 11 にした後、読み込みが速くなった感はあるのですが、どう考えても SPDY 対応をしていないだろお前っていうサイトの読み込みも速くなっているので、別に SPDY だから云々ということはなさそう。正直効果はよくわからないけど、速くなれば別になにが効いててもいいです…。