我可以期望localStorage中的数据保留多久?一般用户的localStorage数据会持续多久?如果用户不清除它,它能持续到浏览器重新安装吗?
这个行为在各个浏览器是否一致?
我可以期望localStorage中的数据保留多久?一般用户的localStorage数据会持续多久?如果用户不清除它,它能持续到浏览器重新安装吗?
这个行为在各个浏览器是否一致?
localStorage.setItem('bob', varMyData);
sessionStorage.setItem('bob', varMyData);
就在这里,就在顶部,我们需要记住还有indexedDB API - 它可以存储比localStorage多得多的数据!(请参阅下面的限制)
localStorage与sessionStorage类似,唯一的区别是localStorage中存储的数据没有过期时间,而sessionStorage中存储的数据在浏览会话结束时被清除(即当浏览器/浏览器标签关闭时)。(请参阅下面的限制部分以获取最新的存储大小限制。)
会话存储(session storage)比localStorage使用得少得多,并且仅存在于当前浏览器标签中 - 即使两个加载了相同网站的标签也会有不同的sessionStorage数据。sessionStorage数据在页面刷新后仍然存在,但在关闭/打开标签后会被清除。另一方面,localStorage数据在同一源的所有标签和窗口之间共享。localStorage数据不会过期;它在浏览器重启甚至操作系统重启后仍然存在。
localStorage在所有浏览器上都可用,但持久性的实现并不一致。特别是,localStorage可能会被用户操作清除,也可能会被意外清除(谁会想到清除所有cookie也会清除localStorage呢?)。
在Firefox中,当满足以下三个条件时,localStorage会被清除:(a)用户清除最近的历史记录,(b)选择清除cookie,(c)时间范围为“全部” - 或者当LocalStorage已满时 - 请参阅下面的“限制”部分。
在Chrome中,当满足以下条件时,localStorage会被清除:(a) 清除浏览数据,(b) 选择"cookies和其他站点数据",(c) 时间范围选择"从开始时" -- 或者当LocalStorage已满时(请参见下面的"限制"部分)。在Chrome中,现在也可以删除特定站点的localStorage。当总的localStorage已满时,浏览器将根据最近最少使用(LRU)策略开始清除数据(称为“源清除”)- 最近最少使用的域将首先被删除,然后是下一个,直到浏览器不再超过限制。
请注意,此原始驱逐过程将删除整个域的数据,直到存储量再次低于限制。删除域的本地存储数据是“全有或全无”的,没有修剪效果来删除部分原始(域)数据,因为部分数据可能比没有数据更糟糕。Opera开发者网站对localStorage有一个很好的总结:
目前在客户端存储数据的方式——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)
https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more