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

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值