Webストレージは、 DOMストレージ(ドキュメントオブジェクトモデルストレージ)とも呼ばれ、 Webブラウザが提供する標準のJavaScript APIです。これにより、WebサイトはCookieと同様にユーザーのデバイスに永続的なデータを保存できますが、容量ははるかに大きく[1] 、 HTTPヘッダーで情報が送信されません。[2] Webストレージには主に2つのタイプがあります。ローカルストレージとセッションストレージで、それぞれ永続CookieとセッションCookieと同様に動作します。Webストレージは、ワールドワイドウェブコンソーシアム(W3C)[3]とWHATWG [4]によって標準化されており、すべての主要ブラウザでサポートされています。
特徴
Web ストレージは、いくつかの重要な点で Cookie と異なります。
目的
Cookie はサーバーとの通信を目的としており、すべてのリクエストに自動的に追加され、サーバー側とクライアント側の両方からアクセスできます。Web ストレージは、クライアント側スクリプトの範疇にのみ含まれます。Web ストレージ データは、すべての HTTP リクエストでサーバーに自動的に送信されるわけではなく、Web サーバーは Web ストレージに直接書き込むことはできません。ただし、これらの効果はいずれも、明示的なクライアント側スクリプトで実現でき、サーバーの必要なインタラクションを微調整できます。
ストレージサイズ
クッキーは 4 キロバイトに制限されています。Web ストレージははるかに大きなストレージ容量を提供します。
- Opera 10.50以降では5MBまで可能[1]
- Safari 8では5MBまで可能[5]
- Firefox 34では10MBまで許可される[5] (以前は2007年では1オリジンあたり5MB [6])
- Google Chromeでは、オリジンごとに10MBまで許可されています(以前はオリジンごとに5MB)[7]
- Internet Explorerでは、ストレージ領域ごとに10MBの容量が許可されます[8]
ローカルおよびセッションストレージ
Web ストレージには、範囲と有効期間が異なる 2 つの異なるストレージ領域 (ローカル ストレージとセッション ストレージ) があります。ローカル ストレージに格納されるデータは、オリジンごと (同一オリジン ポリシーで定義されているプロトコル、ホスト名、ポート番号の組み合わせ) です。データは、以前にデータを保存した同じオリジンのページから読み込まれたすべてのスクリプトで使用でき、ブラウザーを閉じた後も保持されます。そのため、Web ストレージは、RFC 6265 セクション 8.5 および 8.6 で説明されている Cookie の弱い整合性と弱い機密性の問題の影響を受けません。セッション ストレージは、オリジンごととインスタンスごと (ウィンドウごとまたはタブごと) の両方で、インスタンスの有効期間に制限されます。セッション ストレージは、同じ Web アプリの個別のインスタンスを、互いに干渉することなく異なるウィンドウで実行できるようにするためのものですが、これは Cookie では十分にサポートされていないユース ケースです。[9]
インターフェースとデータモデル
Web ストレージは、キーと値が両方とも文字列である連想配列 データ モデルを公開するため、Cookie よりも優れたプログラム インターフェイスを提供します。
使用法
Web ストレージをサポートするブラウザにはグローバル オブジェクトがありsessionStorage、localStorageウィンドウ レベルで宣言されています。これらのブラウザで次のJavaScriptコードを使用して、Web ストレージの動作をトリガーできます。
// セッションの期間中、ブラウザに値を保存します
sessionStorage . setItem ( 'key' , 'value' );
// 値を取得します (ブラウザを閉じて再度開くと削除されます) ...
alert ( sessionStorage . getItem ( 'key' ));
// セッションの期間を超えてブラウザに値を保存します
localStorage . setItem ( 'key' , 'value' );
// 値を取得します (ブラウザを閉じて再度開いた後も保持されます)
alert ( localStorage . getItem ( 'key' ));
Storage APIを介して保存できるのは文字列のみです。[10]異なるデータ型を保存しようとすると、ほとんどのブラウザでは自動的に文字列に変換されます。ただし、 JSONに変換すると、JavaScriptオブジェクトを効率的に保存できます。
// 文字列の代わりにオブジェクトを保存しますlocalStorage.setItem ( ' key ' , { name : 'value' }); alert ( typeof localStorage.getItem ( 'key' )); // 文字列
//文字列の代わりに整数を保存しますlocalStorage.setItem ( ' key' , 1 ); alert ( typeof localStorage.getItem ( 'key' )); //文字列
// 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」は、文字通りドキュメントオブジェクトモデルを指すものではありません。W3Cによると、「DOMという用語は、Webアプリケーションのスクリプトで利用できるAPIセットを指すために使用され、必ずしも実際のドキュメントオブジェクトの存在を意味するものではありません...」[15]
ウェブストレージ管理
ウェブストレージオブジェクトの保存は、サポートしているすべてのウェブブラウザの現在のバージョンでデフォルトで有効になっており、ブラウザベンダーはユーザーがウェブストレージをネイティブに有効または無効にしたり、ウェブストレージの「キャッシュ」をクリアしたりする方法を提供しています。[16]ウェブストレージに対する同様の制御は、サードパーティのブラウザ拡張機能を通じても利用できます。各ブラウザはウェブストレージオブジェクトを異なる方法で保存します。
- FirefoxはWebストレージオブジェクトをユーザーのプロファイルフォルダにあるSQLiteファイルに保存します。 [17]
webappsstore.sqlite - Google Chrome は、 Web ストレージ データをユーザー プロファイル内のSQLiteファイルに記録します。このファイルを含むサブフォルダは、 Windows
\AppData\Local\Google\Chrome\User Data\Default\Local Storageでは「 」、macOSでは「 」です。~/Library/Application Support/Google/Chrome/Default/Local Storage - Operaの Web ストレージは、Opera のバージョンに応じて「
\AppData\Roaming\Opera\Opera\sessions\autosave.win」または「 」のいずれかにあります。\AppData\Local\Opera\Opera\pstorage\ - Internet Explorerの Web ストレージは「
\AppData\LocalLow\Microsoft\Internet Explorer\DOMStorage」です。 - Safari
LocalStorageのWebストレージは、隠し「」フォルダ内の「」というラベルの付いたフォルダにありますsafari。[18]
類似のテクノロジー
localStorageは永続的なキーと値のペアを保存するためによく使用されますが、反復可能なインデックス作成[19]などのさまざまなユースケースやさまざまなパフォーマンスパターンを可能にする他のAPIも登場しています。
- インデックスデータベース API
- Web SQL データベース
- HTTP クッキー
- オリジンプライベートファイルシステム(OPFS)
参考文献
- ^ ab Dixit, Shwetank (2013-03-05). 「Web Storage: より簡単で強力なクライアント側データストレージ」. Dev.Opera . 2021-05-14閲覧。
- ^ Hume, Andy (2011-03-24). 「localStorage は Cookie ではありません」。andyhume.net。2011-06-02 のオリジナルからアーカイブ。2021-05-14に取得。
- ^ Hickson, Ian 編 (2021-01-28). 「Web Storage (Second Edition)」. W3C . Web Platform Working Group . 2021-05-14閲覧。
- ^ WHATWG. 「HTML 標準 § 12 Web ストレージ」. html.spec.whatwg.org . 2021 年 5 月 14 日閲覧。
- ^ ab 北村 英二 (2014-01-28). 「モバイルブラウザでのクォータの利用:ブラウザストレージに関する調査レポート - HTML5 Rocks」。2014年2月1日時点のオリジナルよりアーカイブ。2021年5月4日閲覧。
- ^ John Resig: DOM ストレージ。John Resig、ejohn.org。2011年 6 月 12 日閲覧。
- ^ michaeln (2013-03-08). 「問題 21680002: window.localstorage の制限を 5M から 10M に引き上げました。 - コードレビュー」。Chromiumコードレビュー。2021年 5 月 14 日閲覧。
- ^ Microsoft (2016-10-20). 「Web ストレージの概要」。Microsoft Docs。Microsoft。2021年 5 月 14 日閲覧。
- ^ W3C: Web Storage ドラフト標準。Dev.w3.org (2004-02-05)。2011-06-12 に取得。
- ^ W3C、2011 http://dev.w3.org/html5/webstorage/
- ^ 「DOM Storage」。Mozilla Developer Network。2011年6月4日時点のオリジナルよりアーカイブ。 2011年6月12日閲覧。
- ^ 「Web Storage API」。Mozilla Developer Network 。 2017年6月28日閲覧。
- ^ 「DOM ストレージの概要」。Microsoft Developer Network。2011年 6 月 8 日時点のオリジナルよりアーカイブ。2011 年 6 月 12 日閲覧。
- ^ 「Web ストレージの概要」 。Microsoft Developer Network。2017年6 月 28 日閲覧。
- ^ W3C: Web Storage ドラフト標準。Dev.w3.org (2004-02-05)。2011-06-12 に取得。
- ^ ブラウザの「Web ストレージ」キャッシュを有効化、無効化、またはクリアする方法。mid.as。2022 年 10 月 6 日に取得。
- ^ Webappsstore.sqlite kb.mozillazine.org
- ^ Safari ウェブデータはどこに保存されますか? discussions.apple.com. 2022-10-06 閲覧
- ^ 「現代のアプリケーションにおけるlocalStorage」RxDB 。 2023年8月14日閲覧。
外部リンク
- HTML Living Standard 11 Webストレージ
- W3C: ウェブストレージ
- Mozilla Developer Network の Web Storage API
- Opera: Web Storage: より簡単で強力なクライアント側データストレージ
- BlackBerry DevZone のローカル ストレージ
