なぜ単にクッキーを使わないのか?
以前は、クライアントサイド・ストレージを実現するための伝統的なソリューションと言えばクッキーであった。しかし、PersistJSが人気を博しつつある理由は、クッキーにいくつかの欠点が存在する事だ。例えばクッキーのサイズは4キロバイトに制限されている。また、クッキーは全てのHTTPトランザクションで送信されるため、帯域を無駄遣いする。その上、クッキーの作成や更新は面倒だ。PersistJSは何が良いのか?
- とても小さい(GZIP圧縮されるとわずか3K)
- 使われているブラウザに関係なく一貫したAPIを持つ
- ブラウザプラグインや他のライブラリを必要としない
- 現在のブラウザがサポートしていなければ、クッキーを代わりに利用する
- IE、Firefox、Safariの次期バージョンもサポートすると宣言している
使用例
クライアントサイドのストアにデータを保存する、最も単純な例は、var store = new Persist.Store('My Data Store');値を取得するにはコールバックを必要とするが、やはり簡単だ。
var data = "some arbitrary data of varying length";
store.set('saved_data', data);
store.get('saved_data', function(ok, val) {
if (ok) alert('saved data = ' + val);
});
その他のクライアントサイド・ストレージ・ソリューション
Dojo Storage(source)とGoogle Gears(source)も、クライアントストレージを提供している。しかし、こうしたブラウザプラグインに依存すると問題になる可能性もある。なぜなら、誰もがそのプラグインをインストールしている訳ではないからだ。
その他、いくつかの重要な違いが存在する。
Dojo Storage
- 長所: 良いドキュメントがあり、大きなユーザベースがある
- 欠点: Flashプラグインがインストールされている場合にサポートされるのはInternet Explorerのみ
- 欠点: WebKitベースのブラウザ(Safariなど)がサポートされていない
- 欠点: 利用するには他のDojoライブラリが必要
Google Gears
- 長所: Googleがバックに控えており、Dojoのようにドキュメントがしっかりしている
- 欠点: まだ広くデプロイされていない
- 欠点: プラグインがインストールされていなければ利用できない
ストレージに加えて、Gearsはクライアントサイドでの検索もサポートしている。今週San Franciscoで開かれたGoogle I/O(source)カンファレンスにおいて、MySpaceはメッセージの検索にGearsを使用している事を発表した(source)。今までは探しているメッセージを見つけるのにページを移動する必要があったが、Gearsを利用する事で、全文検索(source)はクライアントサイドで行われる。検索はインクリメンタルに行われ、ユーザの種類に応じて結果が返される。
PersistJSは、Gearsを含むたくさんの異なるバックエンドをサポートしている事に注意しよう。これによるPersistJSのメリットは、バックエンドが変更されても、一貫したAPIを使い続けられると言う事だ。