我在很大程度上依赖于localStorage来创建我正在编写的插件。所有用户设置都存储在其中。某些设置要求用户使用写正则表达式,如果他们的正则表达式规则在某些时候消失,他们会很难过。 所以现在我想知道localStorage是多么持久。
来自the specs:
用户代理应仅出于安全原因或用户请求时从本地存储区域过期数据。
以上看起来就像客户端上的cookie一样。即当用户清除所有浏览器数据(历史记录,cookie,缓存等)时,localStorage也将被截断。这个假设是否正确?
答案 0 :(得分:63)
Mozilla像cookies一样实现它:
当时间范围为“Everything”时(通过nsICookieManager :: removeAll),可以通过“工具 - >清除最近历史记录 - > Cookies”清除DOM存储
https://developer.mozilla.org/en/DOM/Storage
在DOM Storage 中,无法为任何数据指定有效期。所有到期规则都由用户决定。对于Mozilla,大多数规则都是从与Cookie相关的过期规则继承的。因此,您可能希望大多数DOM存储数据至少持续一段有意义的时间。
Chrome将其实现为缓存:
LocalStorage不是安全存储
HTML5本地存储以字符串形式在常规浏览器缓存中保存未加密的数据。
<强>持久性强>
在磁盘上直到被用户删除(删除缓存)或由应用
删除https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage
至于“替换Cookie”,not entirely
Cookie和本地存储确实有不同的用途。 Cookie主要用于读取服务器端,LocalStorage只能在客户端读取。所以问题是,在你的应用中,谁需要这些数据 - 客户端还是服务器?
答案 1 :(得分:15)
基本上,您应该不严重依赖本地存储。
本地存储以及会话存储旨在替代cookie,定义更一致的API。与cookies有一些区别:
所以是,你的假设是正确的。
答案 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数据移动到定期清除的部分缓存中,即根本不是持久性的。我还不知道这是一个错误还是政策变化。