web-dev-qa-db-ja.com

localStorageはどれくらい永続的ですか?

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

仕様 から:

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

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

93
PeeHaa

MozillaはCookieのように実装しています:

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

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はクライアント側のみを読み取ることができます。質問は、あなたのアプリで、このデータを必要とするのは誰ですか?クライアントまたはサーバーですか?

66
Joseph

基本的に、ローカルストレージに大きく依存する必要がありますnot

ローカルストレージは、セッションストレージとともに、Cookieの置き換えを目的としており、より一貫したAPIを定義しています。 Cookieとはいくつかの違いがあります。

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

yes、仮定は正しいです。

16
Daniel Ribeiro

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

6
Luke

ローカルストレージは、クライアント上の信頼できる永続的なデータストアとして設計されています。 「」は「(より良いクッキー)」として設計されたものではありません。その機能はセッションストレージによって満たされるように設計されています。

Dec 2011 Web Storage Spec Candidate Recommendation から、

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

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

4
Michael Mullany

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

2
Wytze