localStorageの持続性はどの程度ですか?


100

私が書いているプラ​​グインのlocalStorageに大きく依存しています。すべてのユーザー設定がそこに保存されます。一部の設定では、ユーザーに正規表現の書き込みが必要であり、ある時点で正規表現ルールがなくなった場合は悲しいことになります。だから今私はlocalStorageがどれほど永続的であるのか疑問に思っています。

スペックから:

ユーザーエージェントは、セキュリティ上の理由またはユーザーから要求された場合にのみ、ローカルストレージ領域のデータを期限切れにする必要があります。

上記は、クライアント側のCookieのように機能するように見えます。つまり、ユーザーがすべてのブラウザデータ(履歴、Cookie、キャッシュなど)をクリアすると、localStorageも切り捨てられます。この仮定は正しいですか?


1
ブラウザが「セキュリティ上の理由」を構成するものを決定することを考えると、理想的な世界では、それが非常に長く続くとは思わないでしょう。ただし、ユーザーが明示的にフラッシュするまで持続するものと想定しても、おそらく安全です。
コービン2012年

1
localStorageを使用する際の警告の1つ:Firefox 39、38、37では確実に機能しないようです(古いものはチェックしていません)。ユーザーのマシンの約1%では、セッションCookieが保持されているにもかかわらず、サイトの閲覧中にlocalStorageが失われることがあります。私にはバグのようです。
Andreas

1
@PeeHaaは、それは単にない仕事クッキーのような、しかし、されている合法的に「クッキー」と定義さすぎ。実際、ストレージ情報はURL内の他のCookieと一緒に表示されますchrome:settings/cookies
Pacerier 2017年

回答:


69

Mozillaはcookieのように実装しています。

時間範囲が「すべて」の場合(nsICookieManager :: removeAllを使用)、「ツール->最近の履歴をクリア-> Cookie」でDOMストレージをクリアできます。

https://developer.mozilla.org/en/DOM/Storage

DOMストレージでは、データの有効期限を指定することはできません。すべての有効期限ルールはユーザーに任されています。Mozillaの場合、それらのルールのほとんどはCookie関連の有効期限ルールから継承されます。このため、DOMストレージデータの大部分は、少なくとも意味のある時間だけ続くと予想できます。

http://ejohn.org/blog/dom-storage/

Chromeはそれをキャッシュのように実装します。

LocalStorageは安全なストレージではありません

HTML5ローカルストレージは、暗号化されていないデータを通常のブラウザキャッシュに文字列形式保存します。

持続性

ユーザー(キャッシュの削除)またはアプリによって削除されるまでディスク上

https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage


「Cookieの置き換え」については、完全はありません

Cookieとローカルストレージは、実際には異なる目的に役立ちます。Cookieは主にサーバー側を読み取るためのものであり、LocalStorageはクライアント側でのみ読み取ることができます。したがって、問題は、アプリでこのデータを必要とするのは、クライアントかサーバーか、ということです。


1
このMDNリンクはより明確に説明されたと思います。
Bo Lu

17

基本的に、ローカルストレージに大きく依存しないでください。

ローカルストレージは、セッションストレージとともに、Cookieの代わりになることを目的としており、より一貫性のあるAPIを定義しています。クッキーといくつかの違いがあります:

  • Cookieにはクライアント側とサーバー側の両方からアクセスできますが、一般にWebストレージ、特にローカルストレージにはクライアント側からのみアクセスできます。
  • ドメインごとに5MB以上(Firefox、Google Chrome、Opera、IEでは10MB)に拡張された容量(Cookieの公式は4 KB)。

だから、そう、あなたの仮定が正しいです。


1
+1-これがローカルストレージをキャッシュとして使用し、サーバー上のユーザーデータをバックアップする理由です。(もちろん、ログインメカニズムが整っていることを前提としています。)
josh3736

2
Basically, you should not heavily depend on Local Storage....絶対に!!
Tenali Raman

7

ローカルストレージの使用に関して注意すべき1つの点。これは非常にブラウザ固有です。Firefoxでデータを保存すると、ChromeやIEなどでは使用できなくなります。また、Cookieとセッションをクリアする限り、ローカルストレージがクリアされるかどうかはブラウザ固有でもあることに気づきました。アプリをローカルストレージに依存することを本当に計画している場合は、詳細を詳しく調べます。


14
これはCookieにも当てはまりますか?
Jeffrey Sweeney

3
これはCookieにも当てはまります。
Moshe L

いいえ、これは必ずしもCookieに当てはまるわけではありません。OSXでは、Webkitを使用するアプリがCookieを共有しているように見えます。私は効果を誤解しているかもしれませんが。
Thomas Tempelmann 2016

一方、彼は、ブラウザ固有のプラグインを書いていると思います。
GuyT 2018年

5

ローカルストレージは、クライアント上のデータの信頼できる永続的なストアになるように設計されています。「より良いCookie」として設計されているわけはありません。その機能は、Session Storageが満たすように設計されています。

2011年12月のWebストレージ仕様の勧告候補

(ローカルストレージ)は、複数のウィンドウにまたがるストレージ用に設計されており、現在のセッションを超えて持続します。特に、Webアプリケーションでは、パフォーマンス上の理由から、ユーザーが作成したドキュメント全体やユーザーのメールボックスなど、メガバイト単位のユーザーデータをクライアント側に保存したい場合があります。

クライアント側のデータとして-それはのように永続的なようである任意のブラウザの実装そのサイズの制限内で、クライアント側のデータ。ユーザーはいつでもそれを削除したり、テキストエディターで開いて編集したりできます。これは、クライアント側のデータと同じです。


1
おそらくこれは8年前の元の投稿から変更されていますが、ローカルストレージはCookieの代わりとして使用できます(クライアント側のみのアクセスが必要な場合)。セッションストレージはできません。ブラウザを閉じるとすぐにセッションストレージが削除されます。
ブラッド

3

iOSアプリにlocalStorageを使用している場合は、十分に注意してください。iOSの最新バージョン(5.1の頭上)は、localstorageとlocaldbのデータを、定期的に消去されるキャッシュの一部に移動しました。つまり、永続的ではありません。これがバグなのか、ポリシーの変更なのかはまだわかりません。


2
これはWebViewに当てはまると思いますが、Safariには当てはまりません。
Trott 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.