如何在一小时后删除本地存储?

时间:2017-08-08 07:13:19

标签: javascript jquery html local-storage

我的数据是对象

我保存它使用这样的本地存储javascript:

localStorage.setItem('storedData', JSON.stringify(data))

我只想将这些数据保存1小时。因此,如果超过1小时,则数据将被删除

我知道要删除这样的数据:

localStorage.removeItem("storedData")

但如何在1小时后将其设置为自动删除?

8 个答案:

答案 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 放在变量上,并在用户下次访问您的网站时进行比较。