本地存储到期

时间:2018-12-05 17:42:41

标签: javascript cookies local-storage session-storage

如何设置特定本地存储变量的到期时间?

示例: 如果我有页面免责声明,并且一旦用户单击“接受”,我就会在本地存储中存储某个变量。但是,在12小时后,我希望将其删除并要求用户再次接受。

我不想将变量存储在会话存储中,因为免责声明将在用户每次打开新标签时提示。

Cookies是另一种解决方案,但我宁愿不使用它。

谢谢!

3 个答案:

答案 0 :(得分:2)

没有内置的方法可以使存储中的值失效。一种解决方案是存储时间戳,然后在每次访问中将存储的时间(如果有)与本地时间进行比较,以确定该值是否已过期。示例:

const expirationDuration = 1000 * 60 * 60 * 12; // 12 hours

const prevAccepted = localStorage.getItem("accepted");
const currentTime = new Date().getTime();

const notAccepted = prevAccepted == undefined;
const prevAcceptedExpired = prevAccepted != undefined && currentTime - prevAccepted > expirationDuration
if (notAccepted || prevAcceptedExpired) {
  alert("Disclaimer: ...");
  localStorage.setItem("accepted", currentTime);
}

答案 1 :(得分:1)

我强烈推荐使用 lscache。只需将此 2.5kb JS 包含到您的 APP 或每个 CDN 中即可。它的高度可配置性和使用非常容易。它支持字符串或对象。

If (lscache.get('myVar') === null) {
  alert('time exceeded')
  //set variable which will expire in 3 days
  lscache.set('myVar', true, (60*24*3))
}

答案 2 :(得分:0)

根据MDN window.localstorage

  

存储在localStorage中的数据没有到期时间

使用cookies就像是要走的路