localStorage有多持久?

我在很大程度上取决于我写的插件localStorage。 所有用户设置都存储在其中。 有些设置需要用户写regex'es,如果他们的regex规则在某些时候没有了,他们会很难过。 所以现在我想知道localStorage是多么持久。

从规格 :

用户代理只能出于安全原因或在用户请求时从本地存储区域中过期数据。

以上看起来像是在客户端上的cookie一样。 即当用户清除所有的浏览器数据(历史,cookies,caching等)时,localStorage也将被截断。 这个假设是否正确?

Mozilla像cookies一样实现它:

当时间范围是“一切”(通过nsICookieManager :: removeAll)时,可以通过“工具 – >清除最近历史logging – > Cookies”

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

在DOM存储中,不可能为您的任何数据指定过期期限。 所有到期规则留给用户。 在Mozilla的情况下,大部分规则都是从Cookie相关的过期规则中inheritance的。 正因为如此,您可能会期望大部分DOM存储数据至less持续一段有意义的时间。

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

Chrome实现它像caching:

本地存储不安全存储

HTML5本地存储在常规浏览器caching中以stringforms保存未encryption的数据。

坚持

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

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


至于“replaceCookie”, 不完全是

Cookie和本地存储真的有不同的用途。 Cookies主要用于读取服务器端,LocalStorage只能读取客户端。 所以问题是,在你的应用程序中,谁需要这些数据 – 客户端还是服务器?

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

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

  • 虽然cookie可以从客户端和服务器端访问,但通常Web Storage,特别是本地存储只能从客户端访问。
  • 对于每个域名(火狐浏览器,Google Chrome浏览器和Opera以及IE中的10MB),增加的容量(cookie的官方规格是4千字节)超过5Mb。

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

有一点需要注意关于使用本地存储。 这是非常浏览器的具体。 如果你用firefox存储数据,它将不会在铬或ie等。也就清理cookies和会话,我已经注意到它也是浏览器特定的本地存储是否被清除。 如果您真的计划依靠本地存储来存储应用程序,我会仔细研究这些细节。

本地存储devise为在客户端上可靠,持久的数据存储。 它不是被devise成“更好的cookie”:该function被devise为由会话存储来满足。

从2011年12月的networking存储规范候选build议书中 ,

(本地存储)是为跨越多个窗口的存储而devise的,并且持续超出当前会话。 特别是,Web应用程序为了性能原因可能希望在客户端存储兆字节的用户数据,例如整个用户编写的文档或用户的邮箱。

作为客户端数据,它与任何客户端数据一样持久,在浏览器实现的大小限制内。 用户可以随时删除它,在文本编辑器中打开并编辑等 – 就像任何客户端数据一样。

如果您使用localStorage作为iOS应用程序,请非常小心。 最新版本的iOS(我的头顶5.1)已经将localstorage和localdb数据移到了定期清除的一部分caching中,即根本没有持久性。 我不知道这是一个错误还是一个政策变化。