LocalStorage变量自动消失

这可能是一个愚蠢的问题,但我想不通为什么。 因此,我必须将一些配置编号永久存储到浏览器中,这样,如果应用程序重新加载,它可以立即获得这些配置编号。我想我们可以通过使用localStorage来做到这一点。 我实现并使其正常工作,使用:

localStorage.setItem('token', 'fsdfdsfsdfdsfds');
localStorage.setItem('config1', 'config1');
localStorage.setItem('config2', 'config2');
localStorage.setItem('config3', 'config3);
但是,2小时后,config1、config2、config3全部消失。localStorage中只有内标识1仍然存在。我认为本地商店里的那件商品应该放多久就放多久。我们可以完全控制它。

这里有什么解释吗?谢谢


解决方案

我不确定Chrome是如何在匿名模式下处理localStorage的,所以我不能给您一个详细的答案,但有一件事我知道,您不能依赖于匿名模式下的localStorage。

勾选MDN -> Web Storage API -> Private Browsing / Incognito modes

大多数现代浏览器都支持名为"隐姓埋名"、"私人浏览"或类似的不存储历史和cookie等数据的隐私选项。由于显而易见的原因,这从根本上与Web存储不兼容。因此,浏览器供应商正在试验如何处理此不兼容性的不同方案。

大多数浏览器都选择了这样一种策略,即存储API仍然可用,并且看起来功能完整,但一个很大的不同之处在于,在浏览器关闭后,所有存储的数据都会被擦除。对于这些浏览器,对于应该如何处理现有的存储数据(来自常规浏览会话)仍有不同的解释。在私密模式下是否可以阅读?还有一些浏览器,最著名的是Safari,它们选择了这样一种解决方案:存储空间可用,但却是空的,并且分配了0字节的配额,这实际上导致无法向其写入数据。

开发人员应了解这些不同的实现,并在开发依赖于Web存储API的网站时将其考虑在内。有关更多信息,请查看WHATWG专门讨论此主题的博客文章。

相关文章