我的数据是对象
我保存它使用这样的本地存储javascript:
localStorage.setItem('storedData', JSON.stringify(data))
我只想将这些数据保存1小时。因此,如果超过1小时,则数据将被删除
我知道要删除这样的数据:
localStorage.removeItem("storedData")
但如何在1小时后将其设置为自动删除?
答案 0 :(得分:8)
你做不到。 When do items in HTML5 local storage expire? 您唯一能做的就是在超时1小时内设置delete语句。 这需要用户留在您的页面上,否则将无法执行超时。
您还可以设置到期字段。当用户重新访问您的站点时,请检查过期时间并在下次访问时删除存储空间。
答案 1 :(得分:2)
您无法使用setTimeout()。因为您无法保证您的代码将在1小时内在浏览器上运行。但您可以设置时间戳,然后返回时只需检查时间戳并根据到期条件清除存储空间。
答案 2 :(得分:1)
使用setInterval,在本地数据中设置/推送过期密钥, 检查下面的代码。
string filename = "Test pic test.png";
StorageFile TestFile = await PictureFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream strem = await TestFile.OpenAsync(FileAccessMode.ReadWrite))
{
await CanvasImage.SaveAsync(filename);
}
答案 3 :(得分:1)
改用cookie
Cookies.set('foo_bar', 1, { expires: 1/24 })
答案 4 :(得分:1)
var hours = 1; // to clear the localStorage after 1 hour(if someone want to clear after 8hrs simply change hours=8)
var now = new Date().getTime();
var setupTime = localStorage.getItem('setupTime');
if (setupTime == null) {
localStorage.setItem('setupTime', now)
} else {
if(now-setupTime > hours*60*60*1000) {
localStorage.clear()
localStorage.setItem('setupTime', now);
}
}
答案 5 :(得分:0)
我认为setTimeout()方法可以解决问题。
setTimeout(function(){localStorage.removeItem("storedData");}, 1000*60*60);
答案 6 :(得分:0)
这适用于SPA,其中浏览器窗口不会在页面渲染器上重新加载:
在本地存储中设置一个expiresIn
字段。
在窗口重新加载时检查以查看if current time >= expiresIn
if true clear localStorage items else carry on
您还可以在业务逻辑需要时进行此检查。
答案 7 :(得分:0)
只需在您的应用程序中添加检查以检查变量是否存在,然后对其进行检查。将 unix timestamp 放在变量上,并在用户下次访问您的网站时进行比较。