美文网首页
微信小程序设置缓存失效时间及读取缓存

微信小程序设置缓存失效时间及读取缓存

作者: _伦 | 来源:发表于2019-07-10 13:56 被阅读0次

    小程序官方API提供了设置缓存和读取缓存的api,不过都是永久缓存,除非用户手动清除,否则会一直留在用户手机 。而我们都知道,本地缓存最大为10M。实际开发过程中,或者为了给用户节省内存,或者为了设置信息即时性,我们需要对部分缓存设置时效性,在它到期之后自动删除。

    一、关于缓存方法微信官方api如下

    1.异步缓存

    wx.setStorage(OBJECT)

    wx.getStorage(OBJECT)

    wx.getStorageInfo(OBJECT)

    wx.removeStorage(OBJECT)

    wx.clearStorage()

    2.同步缓存

    wx.setStorageSync(KEY,DATA)

    wx.getStorageSync(KEY)

    wx.getStorageInfoSync

    wx.clearStorageSync() ...

    关于具体的使用方法请去看官方文档

    二、下面就是记录关于设置缓存时效性的方法,说到底也就是对这些缓存方法进行二次封装

    ​//设置时效缓存,time为有效时间,(单位:小时,不填则默认24小时)

    function setStorageSyncHour(key, value, time) {

      wx.setStorageSync(key, value)

      var t = time ? time : 24;

      var seconds = parseInt(t * 3600);

      if (seconds > 0) {

        var timestamp = Date.parse(new Date());

        timestamp = timestamp / 1000 + seconds;

        wx.setStorageSync(key + 'dtime', timestamp + "")

      } else {

        wx.removeStorageSync(key + 'dtime')

      }

    }

    //设置时效缓存,time为有效时间,(单位:秒,不填则默认3600s)

    function setStorageSyncSecond(key, value, time) {

      wx.setStorageSync(key, val)

      var t = time ? time : 3600;

      var seconds = parseInt(t);

      if (seconds > 0) {

        var timestamp = Date.parse(new Date());

        timestamp = timestamp / 1000 + seconds;

        wx.setStorageSync(k + 'dtime', timestamp + "")

      } else {

        wx.removeStorageSync(k + 'dtime')

      }

    }

    //读取缓存,若缓存不存在,返回def,def为可选参数,表示无缓存数据时返回值(支持字符串、json、数组、boolean等等)

    function getStorageSyncTime(key, def) {

      var deadtime = parseInt(wx.getStorageSync(key + 'dtime'))

      if (deadtime) {

        if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {

          wx.removeStorageSync(key);

          wx.removeStorageSync(key + 'dtime');

          if (def) { return def; } else { return; }

        }

      }

      var res = wx.getStorageSync(key);

      if (res) {

        return res;

      } else if (def) {

        return def;

      } else {

        return;

      }

    }

    module.exports = {

      setStorageSyncHour: setStorageSyncHour,

      setStorageSyncSecond: setStorageSyncSecond,

      getStorageSyncTime: getStorageSyncTime

    }

    这里比较时间的方法就是使用parse方法。

    parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。就可以对时间进行比较

    相关文章

      网友评论

          本文标题:微信小程序设置缓存失效时间及读取缓存

          本文链接:https://www.haomeiwen.com/subject/dcqhkctx.html