【小程序/公众号】微信小程序设置缓存失效时间及读取缓存

前言

小程序官方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()  // 获取当前storage中所有的存储的信息

wx.clearStorageSync()

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

二、下面就是记录关于设置缓存时效性的方法,说到底也就是对这些缓存方法进行二次封装
/**
 * 设置时效缓存
 * @param  {String} key    存储的key值
 * @param  {String} value  存储的value值 (不填则默认为1)
 * @param  {Number} time   有效时间,(单位:秒,不填则默认一天)
 */
function setStorageSyncSecond(key, value, time) {
  value = value ? value : 1
  wx.setStorageSync(key, value)
  var t = time ? +time : 24 * 3600
  if (t > 0) {
    var timestamp = new Date().getTime()
    timestamp = timestamp / 1000 + t
    wx.setStorageSync(key + 'dtime', timestamp + "")
  } else {
    wx.removeStorageSync(k + 'dtime')
  }
}

/**
 * 读取时效缓存
 * @param   {String}  key  存储的key值
 * @return  {*} true为当前时间已失效、或者该值不存在,undefined默认返回则为当前时间未到失效时间
 */
function getStorageSyncTime(key){
  var deadtime = +wx.getStorageSync(key + 'dtime')
  if (deadtime) {
    if (deadtime < (new Date().getTime()) / 1000) {
      wx.removeStorageSync(key)
      wx.removeStorageSync(key + 'dtime')
      return true
    }
  }else{
    return true
  }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值