前言
小程序官方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
}
}