Web Storageとは
対応ブラウザ
※Windows 7上で動作確認を行っています。
※ブラウザの設定より、異なる挙動をする場合があります。
※ブラウザにWeb Storage自体が実装されている場合に「○」としています。個々のメソッドや属性などについては未実装である場合があります。
解説
Web Storageは、任意のデータを、簡単な辞書のような形式で、ブラウザに保存するためのAPIです。
従来、操作の進行状況やカスタマイズ情報など、ユーザーごとの情報をクライアント側に保存するにはクッキーが使用されてきました。しかし、クッキーには現在の水準では非常に少ない容量( 4 キロバイト)しか許されておらず、HTTP通信にデータとして含まれてしまうといった問題がありました。
Web Storageではローカル領域に辞書のような項目名付きの形式(Key-Value Store)でデータを保持し、既定で保持しているデータが通信内容に含まれてしまうということはありません。また、標準で保存領域の保持単位ごとに 5 メガバイトが用意されます。(上限はブラウザの実装によって異なります)
保存領域には、データを保持する際の単位によってローカルストレージとセッションストレージの二種類があります。
//ローカルストレージ
var locStorage = window.localStorage;
//セッションストレージ
var sesStorage = window.sessionStorage;
ローカルストレージには、windowオブジェクトのlocalStorage属性に格納される、WindowLocalStorageオブジェクトを通じて読み書きを行います。
ローカルストレージの保持単位は、URLのスキーム、ドメイン、ポート番号を組み合わせた情報(オリジンといいます)になります。ローカルストレージはウィンドウやタブが閉じられたり、ブラウザが終了しても失効せず、つぎに開かれた時点でも同じ内容を保持します。
セッションストレージには、windowオブジェクトのsessionStorage属性に格納される、WindowSessionStorageオブジェクトを通じて読み書きを行います。
セッションストレージの保持単位はセッションです。セッションは、特定のウィンドウ、あるいは、ウィンドウがタブに分かれていればそれぞれのタブごとに開始され、その特定のウィンドウまたはタブが閉じられると終了します。ウィンドウまたはタブに親子関係がある場合、開かれた側は、開いた側のその時点でのセッションストレージの内容をコピーしますが、それ以降は同期しません。
再読み込みやクラッシュからの復元を行った場合は、同一のセッションとして扱われます。ただし、クラッシュからの復元の際には、ブラウザのバージョンによってはデータの復元が行われない場合があります。
ローカルストレージとセッションストレージのどちらの場合でも、オリジンが異なるページのストレージにアクセスすることはできません。
http://www.example.com:80/path/a/b/c.html
http://www.example.com:80/path/a/d.html
上記のようなurlの場合、スキームは「http://」、ドメインは「www.example.com」、ポートは「:80」で、「http://www.example.com:80」がオリジンになり、c.htmlとd.htmlはオリジンが同じなのでlocalStorageも同じになります。このことは、レンタルスペースなど、サーバーを他の人々と共有する場合にはセキュリティ上の問題となります。
関連項目
(関連する項目はありません)