过期的本地存储
Local Storage with Expiration
如何为特定的本地存储变量设置过期时间?
示例:
如果我有一个页面免责声明,并且一旦用户单击 "accept",我就会将某个变量存储在本地存储中。但是 12 小时后,我希望它被删除并请求用户再次接受。
我不想将变量存储在会话存储中,因为每次用户打开新标签时都会提示免责声明。
Cookie 是另一种解决方案,但我宁愿尽可能不使用它。
谢谢!
没有内置方法可以使存储中的值过期。一种解决方案是存储时间戳,然后在每次访问时将存储的时间(如果有的话)与本地时间进行比较,以确定该值是否已过期。示例:
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);
}
我强烈推荐使用lscache。只需将这个 2.5kb 的 JS 包含到您的应用程序或每个 CDN 中。它的高度可配置性和使用非常简单。它支持字符串或对象。
If (lscache.get('myVar') === null) {
alert('time exceeded')
//set variable which will expire in 3 days
lscache.set('myVar', true, (60*24*3))
}
如何为特定的本地存储变量设置过期时间?
示例: 如果我有一个页面免责声明,并且一旦用户单击 "accept",我就会将某个变量存储在本地存储中。但是 12 小时后,我希望它被删除并请求用户再次接受。
我不想将变量存储在会话存储中,因为每次用户打开新标签时都会提示免责声明。
Cookie 是另一种解决方案,但我宁愿尽可能不使用它。
谢谢!
没有内置方法可以使存储中的值过期。一种解决方案是存储时间戳,然后在每次访问时将存储的时间(如果有的话)与本地时间进行比较,以确定该值是否已过期。示例:
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);
}
我强烈推荐使用lscache。只需将这个 2.5kb 的 JS 包含到您的应用程序或每个 CDN 中。它的高度可配置性和使用非常简单。它支持字符串或对象。
If (lscache.get('myVar') === null) {
alert('time exceeded')
//set variable which will expire in 3 days
lscache.set('myVar', true, (60*24*3))
}