LocalStorage 的持久性如何?

我正在编写的一个插件严重依赖 localStorage。所有用户设置都存储在其中。有些设置要求用户写正则表达式,如果他们的正则表达式规则在某个时刻消失了,他们会很伤心。 所以现在我想知道 localStorage 的持久性如何。

From 说明书:

User agents should expire data from the local storage areas only for security reasons or when requested to do so by the user.

The above looks like it works just like cookies on the clientside. I.e. when the user clears all browser data (history, cookies, cache etc) the localStorage will also be truncated. Is this assumption correct?

92904 次浏览

基本上,没有应该严重依赖于本地存储。

Local Storage, along with Session Storage, aims to be a replacement of the cookies, defining a more consistent API. There are a few differences from the cookies:

  • 虽然 Cookie 可以从客户端和服务器端访问,但是 Web Storage (一般情况下)和 Local Storage (特别是)只能从客户端访问。
  • 增强容量(官方的 Cookie 为4KB) ,每个域超过5MB (Firefox,Google Chrome 和 Opera,IE 为10MB)。

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

关于使用本地存储,有一点需要注意。这是非常具体的浏览器。如果你使用 Firefox 存储数据,它不会在 chrome 或 ie 等。至于清除 Cookie 和会话,我注意到它也是浏览器特有的,以确定是否清除了本地存储。如果你真的打算依赖本地存储来开发应用程序,我会仔细研究很多细节。

Mozilla 像 cookie 一样实现了它:

DOM Storage can be cleared via "Tools -> Clear Recent History -> Cookies" when Time range is "Everything" (via nsICookieManager::removeAll)

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

在 DOM Storage 不可能为任何数据指定过期期限。所有过期规则由用户决定。对于 Mozilla,这些规则大部分是从 Cookie 相关的过期规则继承的。中由于这个原因,您可能希望大多数 DOM Storage 数据至少能够持续有意义的时间。

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

Chrome 像缓存一样实现了它:

LocalStorage 不是安全存储

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

坚持不懈

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

Https://developers.google.com/web-toolkit/doc/latest/devguidehtml5storage


至于“饼干的替代品”,不完全是

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

本地存储被设计为客户端上可靠的、持久的数据存储。它 不是被设计成一个“更好的 cookie”: 这个函数被设计成由会话存储来满足。

2011年12月网络存储规格候选建议,

(本地存储)是为跨多个窗口的存储设计的, 持续时间超过当前会话。特别是 Web 应用程序 可能希望存储兆字节的用户数据,如整个 用户编写的文档或用户的邮箱,在客户端用于 performance reasons.

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

如果你在 iOS 应用程序中使用 localStorage,一定要非常小心。最新版本的 iOS (我脑海中的5.1版本)已经将本地存储和本地数据库数据移动到缓存中定期清除的部分,即根本不持久。我还不能确定这是一个错误还是一个政策变化。