localStorage 添加过期时间

1,623 阅读1分钟

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)
    }
    

本地存储数据存在一定的风险性,还是要根据不同的业物场景来选择。