本地存储的持久性如何?

我严重依赖本地存储来编写我正在编写的插件。所有用户设置都存储在其中。某些设置要求用户写入正则表达式,如果他们的正则表达式规则在某个时候消失,他们会很难过。所以现在我想知道localStorage有多持久。

规格:

用户代理应仅出于安全原因或在用户请求时使本地存储区域中的数据过期。

上面看起来就像客户端的cookie一样工作。即,当用户清除所有浏览器数据(历史记录,Cookie,缓存等)时,localStorage也将被截断。这个假设是否正确?


答案 1

Mozilla像cookie一样实现它:

当时间范围为“所有内容”时,可以通过“工具 ->清除最近的历史记录 -> Cookie”清除 DOM 存储(通过 nsICookieManager::removeAll)

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

在 DOM 存储中,无法为任何数据指定过期期限。所有过期规则都由用户决定。在Mozilla的情况下,大多数这些规则都是从与Cookie相关的过期规则继承而来的。因此,您可能会期望大多数 DOM 存储数据至少在有意义的时间内持续使用。

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

Chrome像缓存一样实现它:

本地存储不是安全的存储

HTML5 本地存储将未加密的数据以字符串形式保存在常规浏览器缓存中

坚持

在磁盘上,直到被用户(删除缓存)或应用程序删除

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


至于“饼干的替代品”,并不完全

Cookie 和本地存储确实服务于不同的目的。Cookie 主要用于读取服务器端,LocalStorage 只能在客户端读取。所以问题是,在你的应用中,谁需要这些数据——客户端还是服务器?


答案 2

基本上,您不应该严重依赖本地存储。

本地存储以及会话存储旨在取代cookie,定义更一致的API。与 Cookie 有一些区别:

  • 虽然可以从客户端和服务器端访问Cookie,但Web存储通常以及本地存储只能从客户端访问。
  • 增强的容量(Cookie的官方容量为4 KB)每个域超过5MB(Firefox,Google Chrome和Opera以及IE中的10MB)。

所以,是的,你的假设是正确的。