wataメモ

日々のメモをつらつらと書くだけ

SPDYを使ってみた

 結構前にGoogleが提唱したSPDY。HTTPの無駄な部分を省き、できる限り改善したというのを見て、発表された当初は「どうせChrome」だけでの実装になるのかなと思っていた。しかしFirefoxでも11から実装され、13ではデフォルトでonになるとか。早くなると言っても通信部分が早くなるだけなのでシステムとして考えると締める割合は多くはない。しかし画面描画にはサーバ処理とHTMLの送信だけではなく、画像やらも含まれる。そういう細かいリクエストを大量に発生させている場合はある程度効果が見込まれるのだろう。CSSスプライトをしなくても同様の効果が得られるような感覚だ。

 個人的に気になったのは既存のHTTPしかしゃべれないブラウザとの共存の方法だった。「SPDYに対応していないと見れない」なんていうサイトはすぐには普及しないだろうから、いきなり振り切ることはHTTPの歴史的に見てもありえない。その辺に言及しているのはここら辺だろうか。SYN_STREAMを渡すことで、これから投げるリクエストのメソッドやパスの情報を渡すようだ。ホスト名とスキーマ(http or https)は必須らしい。SPDYの仕様上、Keep-Aliveは無効で送るべきではないとか、gzip圧縮をサポートしなければならない等の制約もあるようだ。当然プレーンテキストではなくフレームで通信することを前提としている。

 次に気になったのはひとつのソケット接続でマルチリクエストを対応する方法だった。仕様を読んでみたらStream-IDというのでどのストリームのデータか管理するようだ。サーバサイドからもストリームを作成する可能性があるので、Stream-IDはサーバ側は奇数、クライアント側は偶数のIDを振るというルールで衝突を防いでいるようだ。

 色々読んでいるとHTTPに限定したWebSocketに近い感じがしてきた。これなら確かに今後流行っていきそうだと感じた。

 とりあえず実際サーバにmod_spdyをインストールしてみた。httpsを基本前提としているのでmod_sslも入れてオレオレ証明書を作成。実際SPDY通信が行われているかはchrome://net-internals/#spdyから確認出来るようだ。それだと面倒なのでSPDY indicatorを入れると簡単に確認できた。すでにgmailとかでも使用されていて、実は既に使っていたとは意識して居なかった。これからは緑のイナズマが出るサイトが増えていくのだろうか。