Javascript 本地存储的持久性如何?

Javascript 本地存储的持久性如何?,javascript,persistence,local-storage,persistent-storage,Javascript,Persistence,Local Storage,Persistent Storage,我正在编写的插件在很大程度上依赖于本地存储。所有用户设置都存储在其中。有些设置要求用户写正则表达式,如果他们的正则表达式规则在某个时候消失了,他们会很难过。 所以现在我想知道本地存储的持久性 发件人: 只有出于安全原因或在用户请求时,用户代理才能使本地存储区域中的数据过期 上面的内容看起来就像客户端的cookies一样。即,当用户清除所有浏览器数据(历史记录、cookie、缓存等)时,本地存储也将被截断。这个假设正确吗?基本上,您不应该严重依赖本地存储 本地存储和会话存储旨在取代cookie,定

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

发件人:

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


上面的内容看起来就像客户端的cookies一样。即,当用户清除所有浏览器数据(历史记录、cookie、缓存等)时,本地存储也将被截断。这个假设正确吗?

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

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

  • 虽然Cookie可以从客户端和服务器端访问,但是Web存储,尤其是本地存储,只能从客户端访问
  • 每个域(Firefox、Google Chrome、Opera和IE中的10MB)的容量提高到5MB以上

因此是的,您的假设是正确的。

关于使用本地存储,需要注意一点。它非常特定于浏览器。如果您使用firefox存储数据,chrome或ie等将无法使用。至于清除Cookie和会话,我注意到是否清除本地存储也取决于浏览器。如果你真的打算依赖本地存储来开发应用程序,我会仔细研究很多细节。

Mozilla像cookies一样实现它:

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

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

Chrome像缓存一样实现它:

本地存储不是安全存储

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

持久性

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


至于“饼干的替代品”

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


本地存储被设计为在客户端上可靠、持久地存储数据。它不是设计为“更好的cookie”:该功能设计为由会话存储满足

(本地存储)设计用于跨多个窗口的存储, 并持续到本届会议之后。特别是Web应用程序 可能希望存储兆字节的用户数据,例如整个 用户编写的文档或用户邮箱,位于客户端,用于 性能原因


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

如果您在iOS应用程序中使用localStorage,请非常小心。最新版本的iOS(5.1版)已将localstorage和localdb数据移动到缓存中定期清除的部分,即完全不持久。我还不知道这是一个bug还是一个策略更改。

考虑到浏览器可以决定什么是“安全原因”,在理想情况下,你不会认为它会持续很长时间。但是,可以安全地假设它会一直存在,直到用户显式刷新它。使用localStorage时,只有一个警告:它在Firefox 39、38和37中似乎无法可靠工作(我们没有检查任何旧版本)。在大约1%的用户机器上,本地存储有时在浏览我们的站点时丢失,而会话cookie被保存。对我来说似乎是个虫子。@PeeHaa,它不仅仅像饼干一样工作,而且在法律上也被定义为“饼干”。事实上,在url
chrome:settings/cookies
+1中,存储信息与其他cookie一起显示——这就是为什么我要使用本地存储作为缓存并备份服务器上的用户数据。(当然,这假设有一个登录机制。)
基本上,您不应该严重依赖本地存储。
。。。绝对地Cookie不也是这样吗?Cookie也是这样。不,Cookie不一定是这样:在OSX上,使用Webkit的应用程序在我的体验中似乎在共享Cookie。虽然我可能误解了效果。另一方面,他正在编写一个插件,我认为它是特定于浏览器的。我相信这对WebViews是正确的,但对Safari来说不是。我认为这解释得更清楚。也许这从你8年前的原始帖子开始已经改变了,但是本地存储可以很好地替代cookies(仅需要客户端访问的情况下)。会话存储无法进行。关闭浏览器后,会话存储将立即删除。