localStorage 啥时候清零?

Posted

技术标签:

【中文标题】localStorage 啥时候清零?【英文标题】:When is localStorage cleared?localStorage 什么时候清零? 【发布时间】:2012-01-22 03:41:19 【问题描述】:

我希望数据在 localStorage 中保留多长时间。普通用户的 localStorage 数据会持续多久?如果用户不清除,是否会持续到重新安装浏览器?

这在浏览器之间是否一致?

【问题讨论】:

【参考方案1】:

localStorage 也称为 Web 存储、html5 存储和 DOM 存储(这些都是同一个意思)。

localStorage 类似于 sessionStorage,除了存储在 localStorage 中的数据没有过期时间,而存储在 sessionStorage 中的数据在浏览会话结束时被清除(即当浏览器/浏览器选项卡已关闭)。 Session 存储的使用频率远低于 localStorage,并且仅存在于当前浏览器选项卡中 - 即使加载同一个网站的两个选项卡也会有不同的 sessionStorage 数据。 sessionStorage 数据在页面刷新后仍然存在,但不会关闭/打开选项卡。另一方面,LocalStorage 数据在同一来源的所有选项卡和窗口之间共享。 LocalStorage 数据不会过期;它在浏览器重启后仍然存在,甚至在操作系统重启后仍然存在。 Source

localStorage 在所有浏览器上都可用,但持久性的实现并不一致。特别是,localStorage 可以通过用户操作清除,也可能在不经意间清除(谁会认为清除所有 cookie 也会清除 localStorage?)。

在 Firefox 中,当满足以下三个条件时,localStorage 会被清除:(a) 用户清除最近的历史记录,(b) 选择清除 cookie,(c) 时间范围为“Everything”

在 Chrome 中,当满足以下条件时,localStorage 会被清除:(a) 清除浏览数据,(b) 选择“cookie 和其他站点数据”,(c) 时间范围是“从时间开始”。在 Chrome 中,现在也可以delete localStorage for one specific site。

在 IE 中,清除 localStorage:(a) 工具--Internet 选项,(b) 常规选项卡,(c) 退出时删除浏览历史记录,(d) 确保“Cookie 和网站数据”(或“临时 Internet 文件”和网站文件”)被选中,(e)考虑取消选中顶部的“保留收藏夹网站数据”

在 Safari 中:(a) 单击 Safari (b) 首选项 (c) 选择隐私选项卡 (d) 单击删除所有网站数据 (e) 单击立即删除

Opera:尽管 Opera 网站上有关于 localStorage 的优秀文章,但我还没有找到关于如何清除 localStorage 的清晰(非编程)说明。如果有人找到,请在此答案下方留下评论并附上参考链接。


Opera dev site 对 localStorage 有很好的总结:

当前在客户端存储数据的方式——cookies——是一种 问题:

小尺寸:Cookie 通常最大大小约为 4 KB, 不适合存储任何类型的复杂数据

cookie 很难同时跟踪两个或多个事务 网站,这可能发生在两个或更多不同的选项卡中

Cookie 可以使用跨站点脚本等技术加以利用, 导致安全漏洞

其他(不太受欢迎的)替代品 cookie 包括涉及查询字符串、隐藏表单的技术 字段,基于闪存的本地共享对象等。每个都有自己的集合 与安全性、易用性、尺寸限制等相关的问题。 所以到目前为止,我们一直在使用非常糟糕的方式来存储数据 用户端。我们需要一个更好的方法,这就是 Web Storage 的用武之地 在。

网络存储

W3C Web Storage 规范被设计为一种更好的方式 在客户端存储数据。它有两种不同的类型 存储:会话存储和本地存储。

会话和本地存储通常都可以存储 每个域 5 MB 的数据,远远超过 cookie。

资源:

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

https://javascript.info/localstorage

https://dev.opera.com/articles/web-storage/

http://www.quirksmode.org/html5/storage.html

http://www.ghacks.net/2015/02/05/how-to-clear-web-storage-in-your-browser-of-choice/

https://nakedsecurity.sophos.com/2014/11/05/how-to-clear-out-cookies-flash-cookies-and-local-storage/

http://www.opera.com/dragonfly/documentation/storage/

DOMStorage article on MDN (written by John Resig)

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

【讨论】:

我要补充的是,您实际上可以在“开发模式”(按 F12)的“存储”选项卡中查看、修改和删除这些 localStorage 变量。 indexDB也是这样吗? IE。也可以通过用户操作清除? 在IE中除上述步骤外,用户需要关闭浏览器才能看到localstorage的删除【参考方案2】:

W3C 草案是这么说的

用户代理应该仅出于安全原因或在用户请求时使本地存储区域中的数据过期。用户代理应始终避免在可以访问数据的脚本运行时删除数据。

因此,如果浏览器遵循规范,它应该会一直存在,直到用户在所有浏览器上将其删除,我没有发现任何已从我的项目中删除的内容。

一篇不错的文章也是http://ejohn.org/blog/dom-storage/

【讨论】:

“用户要求这样做” = 当用户清除数据时。请参阅stevesouders.com/blog/2012/09/10/clearing-browser-data 了解特定于浏览器的清理以及如何进行。 更新 chrome 时可以清除本地存储。在过去的 12 个月里,这种情况发生在我身上两次。如果数据很重要,请允许并鼓励用户下载相关数据到文件,以便在发生这种情况时重新安装。【参考方案3】:

持续时间

无限制。数据在浏览器和操作系统重启后仍然存在。

容量

每个域可以在 LocalStorage 中存储至少 5MB 的数据

对于some browsers,您最多可以存储1GB 数据

【讨论】:

【参考方案4】:

只要用户选择清除存储(整个或其中的单个值),本地存储中的内容就会持久化

关于跨浏览器的一致性,localstorage 目前在所有主流浏览器上都可用,包括 IE8+(见http://caniuse.com/#feat=namevalue-storage)

【讨论】:

【参考方案5】:

在 Chrome 中执行“清除浏览数据”时,如果您选择“Cookies and other site and plugin data”选项,那么 sessionStorage 数据将被删除。

【讨论】:

以上是关于localStorage 啥时候清零?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5中的localStorage啥时候会被清空?

HTML5中的localStorage啥时候会被清空

CS1.5在控制台输入啥,能战绩清零?

window.localStorage 与 chrome.storage.local

如何手动清除localStorage中的数据

怎么去检测某一个网页下localStorage的剩余容量