html5 的 localStorage 用于存储一些临时的离线数据,当超过一定时间后,我希望清除这些数据防止爆仓,有什么好方法吗?
html5 的 localStorage 用于存储一些临时的离线数据,当超过一定时间后,我希望清除这些数据防止爆仓,有什么好方法吗?
html5 的 localStorage 用于存储一些临时的离线数据
localStorage 和 file、database 一样,是存储,有永久性质。
你存入数据库的数据,不会在某一天突然被删除了。
你保存到硬盘里面的文件,也不会再某一天突然消失了。
所以,localStorage 本身没有时效性,因为 storage 毕竟不是 ceche。
因此,只能用 js 手动清除了。
那么现在问题来了,js 是客户端脚本,也就是说,只有用户在浏览这个网页的时候,才可能运行 js 脚本来清除,如果用户不再访问本网站,那怎么清除呢?
没有办法清除。
localStorage本身不带时效的。
为此我build了一个项目扩展了localStorage。可以实现设置失效时间:https://github.com/WQTeam/web-storage-cache
em 好像无法解决题主的爆仓问题,只能实现时效功能,还是贴在这里做个参考吧
简单一点写两个方法就好了
/**
* 设置cookie
* @param {[type]} key [键名]
* @param {[type]} value [键值]
* @param {[type]} days [保存的时间(天)]
*/
setCookie: function (key, value, days) {
// 设置过期原则
if (!value) {
localStorage.removeItem(key)
} else {
var Days = days || 7; // 默认保留7天
var exp = new Date();
localStorage[key] = JSON.stringify({
value,
expires: exp.getTime() + Days * 24 * 60 * 60 * 1000
})
}
},
getCookie: function (name) {
try {
let o = JSON.parse(localStorage[name])
if (!o || o.expires < Date.now()) {
return null
} else {
return o.value
}
} catch (e) {
// 兼容其他localstorage
console.log(e)
return localStorage[name]
} finally {
}
},
3 回答1.5k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
5 回答1.9k 阅读
1 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.6k 阅读✓ 已解决
不过有一点,请不要用localStorage保存机密数据,即便你已加密,也不安全哟~