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

小程序官方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 午夜距离该日期时间的毫秒数。就可以对时间进行比较

你可能感兴趣的:(微信小程序设置缓存失效时间及读取缓存)