LocalStorage 何时清空?

我期望数据保存在 localStorage 中多长时间。一个普通用户的 localStorage 数据将持续多长时间?如果用户不清除它,它会持续到浏览器重新安装吗?

这在不同浏览器之间是一致的吗?

146765 次浏览

W3C 草案是这么说的

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

因此,如果浏览器遵循规范,它应该持续,直到用户删除它在所有浏览器,我没有发现任何删除了我的项目。

读一篇好文章也是 http://ejohn.org/blog/dom-storage/

本地存储中的内容是持久的,只要用户选择清除存储(完全清除或清除其中的单个值)

关于跨浏览器的一致性,目前本地存储在每个主要浏览器上都可用,包括 IE8 + (参见 http://caniuse.com/#feat=namevalue-storage)

在 Chrome 中执行“清晰浏览数据”时,如果选择“ Cookies 和其他站点及插件数据”选项,sessionStorage 数据将被删除。

LocalStorage 也称为 Web Storage、 HTML5 Storage 和 DOM Storage (它们的含义都是一样的)。

localStorage.setItem('bob', varMyData);
sessionStorage.setItem('bob', varMyData);

LocalStorage 类似于 sessionStorage,存储在 localStorage 中的 除了数据没有过期时间,而存储在 sessionStorage 中的数据在浏览会话结束时(即浏览器/浏览器选项卡关闭时)被清除。(见 限制 下面一节介绍最新的存储大小限制。)

会话存储的使用比 localStorage 少得多,而且只存在于当前的浏览器选项卡中——即使两个选项卡加载了同一个网站,也会有不同的会话存储数据。SessionStorage 数据在页面刷新后仍然存在,但不会关闭/打开选项卡。另一方面,LocalStorage 数据在来自同一 起源的所有选项卡和窗口之间共享。LocalStorage 数据不会过期; 它在浏览器重新启动后甚至在 OS 重新启动后仍然存在。

LocalStorage 在所有浏览器上都可用,但是持久性并没有始终如一地实现。特别是,localStorage 可以通过用户操作清除,并且可能会在无意中被清除(谁会认为清除所有 cookie 也会清除 localStorage?).

在 Firefox 中,当满足以下三个条件时,localStorage 将被清除: (a)用户清除最近的历史记录,(b)选择清除 cookie,(c)时间范围为“一切”——或者 LocalStorage 完全满足时,请参阅下面的“限制”部分。

在 Chrome 中,当满足以下条件时,localStorage 会被清除: (a)清除浏览数据,(b)选择“ cookies 和其他站点数据”,(c)时间框架是“从一开始”——或 LocalStorage 已满(见下面的“限制”部分)。在 Chrome 中,现在也可以使用 删除一个特定站点的 localStorage

在 IE 中,清除 localStorage: (a) Tools —— Internet Options,(b) General tab,(c)删除退出时的浏览历史记录,(d)确保“ Cookies and site data”(或“ Clinical Internet files and site files”)被选中,(e)考虑取消选中顶部的“ Preserve Favorites site data”

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

Opera: 尽管 Opera 网站上有很多关于 localStorage 的优秀文章,但是我还没有找到清晰的(非编程的)指导用户如何清除 localStorage。如果有人发现,请留下一个评论下面这个答案与参考链接。

限制:

TOTALlocalStorage 的可用磁盘空间限制在50% 。

另外,对于任何一个“来源”(域 + 任何子域)的 localStorage (理论上)被限制在总 localStorage 的20% ——尽管在实践中,对于一个域的 localStorage (截至10月2022日)是:

  • 最低: 10Mb
  • 最大值: 2Gb 来源
  • 实际: 5Mb (限制我的系统6Gb 的空闲空间,根据修改后的版本 < a href = “ https://www.geeksforgeeks.org/what-is-the-max-size-of-localStorage-values/”rel = “ nofollow noReferrer”> 这个脚本 )
    (测试系统: i7/32Gb/500Gb SSD w 6Gb 免费/Brave 浏览器:
    版本1.45.133 Chromium: 107.0.5304.141(正式版)(64位)

当 TOTAL localStorage 已满时,浏览器将根据 LRU 策略开始清除数据(称为“原始驱逐”)ーー最近使用最少的域将首先被删除,然后是下一个域,直到浏览器不再超出限制。

请注意,这个原点驱逐过程将删除整个域的数据价值,直到存储量再次达到限制。删除域的 localStorage 数据是“要么全部要么全部不删除”——对于删除源(域)的部分数据没有任何修剪效果,因为部分数据可能比没有数据更糟糕。


Opera 开发站点对 localStorage 有一个很好的总结:

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

  • 小尺寸: Cookie 的最大大小通常在4 KB 左右 对于存储任何类型的复杂数据来说都不是很好

  • Cookie 很难跟踪同一事务上的两个或多个事务 网站,这可能发生在两个或更多不同的标签

  • 饼干 可以利用跨网站脚本等技术, 导致数字证书认证机构

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

网络存储

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

会话和本地存储通常都可以存储在周围 每个域有5MB 的数据,这比 cookie 大得多。请注意,虽然 MDN 的数字被更新(2022年10月),现在说: 最小值: 10Mb/最大值: 2Gb,这个作者不能超过每个域/原点5Mb。测试脚本

资源:

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/

关于 MDN 的 DOMStorage 文章(由 John Resig 撰写)

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

持续时间

无限 。数据通过浏览器和操作系统重新启动保持。

容量

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

对于 一些浏览器你可以存储到 1GB 的数据