localStorage的持久性如何?

时间:2012-03-30 18:09:59

标签: javascript persistence local-storage persistent-storage

我在很大程度上依赖于localStorage来创建我正在编写的插件。所有用户设置都存储在其中。某些设置要求用户使用写正则表达式,如果他们的正则表达式规则在某些时候消失,他们会很难过。 所以现在我想知道localStorage是多么持久。

来自the specs

  

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

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

5 个答案:

答案 0 :(得分:63)

Mozilla像cookies一样实现它:

  

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

     

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

     

在DOM Storage 中,无法为任何数据指定有效期。所有到期规则都由用户决定。对于Mozilla,大多数规则都是从与Cookie相关的过期规则继承的。因此,您可能希望大多数DOM存储数据至少持续一段有意义的时间。

     

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

Chrome将其实现为缓存:

  

LocalStorage不是安全存储

     

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

     

<强>持久性

     

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

删除      

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


至于“替换Cookie”,not entirely

  

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

答案 1 :(得分:15)

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

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

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

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

答案 2 :(得分:6)

使用本地存储需要注意一点。它非常适合浏览器。如果您使用firefox存储数据,它将无法以chrome或ie等形式提供。另外,就清除cookie和会话而言,我注意到它也是浏览器特定的是否清除了本地存储。如果您真的打算依赖本地存储来购买应用程序,我会详细查看详细信息。

答案 3 :(得分:4)

本地存储旨在成为客户端上可靠,持久的数据存储。 不是设计为“更好的cookie”:该功能旨在通过会话存储来满足。

来自Dec 2011 Web Storage Spec Candidate Recommendation

  

(本地存储)专为跨越多个窗口的存储而设计,   并持续超过当前会议。特别是Web应用程序   可能希望存储兆字节的用户数据,例如整个   用户创作的文档或用户的邮箱,在客户端   表现原因。

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

答案 4 :(得分:2)

如果您在iOS应用中使用localStorage,请务必小心。 iOS的最新版本(我的头顶上的5.1)已将localstorage和localdb数据移动到定期清除的部分缓存中,即根本不是持久性的。我还不知道这是一个错误还是政策变化。