【发布时间】:2012-01-22 03:41:19
【问题描述】:
我希望数据在 localStorage 中保留多长时间。普通用户的 localStorage 数据会持续多久?如果用户不清除,是否会持续到重新安装浏览器?
这在浏览器之间是否一致?
【问题讨论】:
标签: html local-storage
我希望数据在 localStorage 中保留多长时间。普通用户的 localStorage 数据会持续多久?如果用户不清除,是否会持续到重新安装浏览器?
这在浏览器之间是否一致?
【问题讨论】:
标签: html local-storage
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/
http://www.opera.com/dragonfly/documentation/storage/
【讨论】:
W3C 草案是这么说的
用户代理应该仅出于安全原因或在用户请求时使本地存储区域中的数据过期。用户代理应始终避免在可以访问数据的脚本运行时删除数据。
因此,如果浏览器遵循规范,它应该会一直存在,直到用户在所有浏览器上将其删除,我没有发现任何已从我的项目中删除的内容。
一篇不错的文章也是http://ejohn.org/blog/dom-storage/
【讨论】:
【讨论】:
只要用户选择清除存储(整个或其中的单个值),本地存储中的内容就会持久化
关于跨浏览器的一致性,localstorage 目前在所有主流浏览器上都可用,包括 IE8+(见http://caniuse.com/#feat=namevalue-storage)
【讨论】:
在 Chrome 中执行“清除浏览数据”时,如果您选择“Cookies and other site and plugin data”选项,那么 sessionStorage 数据将被删除。
【讨论】: