localStorage的持久性如何?

Pee*_*Haa 94 javascript persistence persistent-storage local-storage

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

规格:

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

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

Jos*_*eph 67

Mozilla像cookie一样实现它:

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

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

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

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

Chrome像缓存一样实现它:

LocalStorage不是安全存储

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

坚持

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

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


至于"替代Cookie",并非完全如此

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

  • 我认为这个[MDN链接](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria)解释得更清楚。 (2认同)

Dan*_*iro 17

基本上,你应该不会在很大程度上依赖于本地存储.

本地存储以及会话存储旨在替代cookie,定义更一致的API.与cookies有一些不同之处:

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

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

  • `基本上,你不应该严重依赖本地存储....绝对!! (2认同)

Luk*_*uke 6

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

  • 饼干也不是这样吗? (11认同)
  • 对于cookie也是如此. (3认同)

Mic*_*any 5

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

来自201112 月的 Web Storage Spec Candidate Recommendation

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

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

  • 也许自您 8 年前的原始帖子以来,情况已经发生了变化,但本地存储非常可以用作 cookie 的替代品(仅需要客户端访问)。会话存储不能。浏览器关闭后,会话存储就会被删除。 (2认同)