【问题标题】:Local Storage with Expiration过期的本地存储
【发布时间】:2019-05-07 08:30:51
【问题描述】:

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

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

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

Cookie 是另一种解决方案,但如果可能,我宁愿不使用它。

谢谢!

【问题讨论】:

  • 没有内置方法可以使本地存储中的值过期。解决方案是同时存储一个日期值,并在下次访问时检查。
  • 您能否提供更多有关如何存储日期值并在下次访问时检查的信息? (如果可能的话,举个例子)谢谢! @亚伦

标签: javascript cookies local-storage session-storage


【解决方案1】:

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

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);
}

【讨论】:

    【解决方案2】:

    我强烈推荐使用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))
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 2023-01-18
      • 2023-03-20
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多