HTML |
---|
![]() |
ウェブストレージ(Web storage)は、DOMストレージ (Document Object Model storage)と呼ばれることもあり、ウェブアプリケーションにクライアント側のデータを保存する方法とプロトコルを提供する。ウェブストレージは永続性のあるデータストレージをサポートするという点で HTTP cookie(クッキー)と似ているが、容量が拡大され[1]、HTTP request headerに情報が保存されなくなった[2]。ウェブストレージにはローカルストレージ(local storage)とセッションストレージ(session storage)の2種類があり、それぞれpersistent cookieとsession cookieと同様にふるまう。ウェブストレージはWorld Wide Web Consortium (W3C)[3]とWHATWG[4]によって標準化されていて、すべての主要なブラウザーにサポートされている。
ウェブストレージはクッキーといくつかの点で異なる。
ウェブストレージをサポートするブラウザはwindowレベルで宣言される sessionStorage
と localStorage
というグローバールオブジェクトを持っている。以下のJavaScriptコードによって、これらのブラウザでウェブストレージを動作させることができる。
// セッション期限に限ってブラウザに値を保存する
sessionStorage.setItem('key', 'value');
// 値を得る (ブラウザを閉じて再度開くと消去される)
alert(sessionStorage.getItem('key'));
// セッション期間を超えてブラウザに値を保存する
localStorage.setItem('key', 'value');
// 値を得る (ブラウザを閉じて再度開いても継続する)
alert(localStorage.getItem('key'));
ストレージのAPIでは文字列のみ保存できる[10]。他のデータ型を保存しようとすれば、多くのブラウザでは自動的に文字列に変換される。しかし、JSONに変換すれば、JavaScriptのオブジェクトを効率的に保存することができる。
// 文字列のかわりにオブジェクトを保存する
localStorage.setItem('key', {name: 'value'});
alert(typeof localStorage.getItem('key')); // string
// 文字列のかわりに整数を保存する
localStorage.setItem('key', 1);
alert(typeof localStorage.getItem('key')); // string
// JSONを使ってオブジェクトを保存する
localStorage.setItem('key', JSON.stringify({name: 'value'}));
alert(JSON.parse(localStorage.getItem('key')).name); // value
W3Cの文書は「Web Storage」というタイトルである。「DOM storage」という名称も一般的に使われていたが、あまり使われなくなってきた。たとえば、MozillaとMicrosoftの開発者サイトではDOM Storageの記事がWeb Storageの記事に書き換えられた[11][12][13][14]。
DOMストレージの「DOM」は、文字通りDocument Object Modelを意味しない。 W3Cによれば、「DOMという用語は、ウェブアプリケーションのスクリプトで使用できるAPI群を指すために使用され、実際にDocumentオブジェクトが存在することを必ずしも意味しない」[15]。
ウェブストレージオブジェクトの保存は現在のすべてのサポートするウェブブラウザでデフォルトで有効にされていて、ブラウザのベンダーごとに、ユーザーがウェブストレージを有効・無効にする方法、そしてウェブストレージの「キャッシュ」を消去する方法が提供されている[16]。同様にウェブストレージを制御する方法は、サードパーティーのブラウザ拡張機能によっても可能である。ブラウザごとにウェブストレージのオブジェクトを保存する方法が次のように異なっている。
webappsstore.sqlite
というSQLiteのファイル webappsstore.sqlite
に保存する[17]。\AppData\Local\Google\Chrome\User Data\Default\Local Storage
であり、macOSでは ~/Library/Application Support/Google/Chrome/Default/Local Storage
である[18]。\AppData\Roaming\Opera\Opera\sessions\autosave.win
か、あるいは \AppData\Local\Opera\Opera\pstorage\
のいずれかに保存される[19]。\AppData\LocalLow\Microsoft\Internet Explorer\DOMStorage
である。