localStorage 添加过期时间
之前对于
localStorage
的理解与使用,都是停留在存储的本地数据,只能手动清除,否则会永远保存在本地。最近在一次的业务逻辑中,偶尔发现localStorage
还能巧妙的为其加上过期时间。
思路:
- 在存储数据的时候,多存入一个字段 time(值由当前时间戳 + 需要保留的过期时间的和组成);
- 取数据的时候,则用当前的时间戳与本地数据的 time 字段作比较,若大于 time 的值,则表示已经过期;
实现:
-
setData
function setData(key, value) { let currentTime = new Date().getTime() // 设置过期时间 (7天) let pastTime = 7 * 24 * 60 * 60 * 1000 localStorage.setItem(key, JSON.stringify({data: value, time: currentTime + pastTime})) } 复制代码
-
getData
function getData(key) { let dataObj = JSON.parse(localStorage.getItem(key)) if (new Date().getTime() > dataObj.time) { console.log('已经过期'); // TODO return null; } else { return dataObj.data } } 复制代码
-
removeData
function removeData(key) { localStorage.removeItem(key) } 复制代码
本地存储数据存在一定的风险性,还是要根据不同的业物场景来选择。