因公司发展需要,本人也踩进微信小程序的坑了,爬坑是一个艰辛的过程,现将遇到的部分问题记录一下。
小程序官方API提供了wx.setStorageSync,不过是永久缓存,除非用户手动清除,否则会一直留在用户手机 。而我们都知道,本地缓存最大为10M。实际开发过程中,或者为了给用户节省内存,或者为了设置信息即时性,我们需要对部分缓存设置时效性,在他到期之后删除。相关代码如下:
//设置时效缓存,time为有效时间,单位小时,默认24小时
var postfix = '_deadtime';
setStorageSync: function (k, v, time){
wx.setStorageSync(k, v);
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(k + postfix, timestamp + "")
} else {
wx.removeStorageSync(k + postfix)
}
},
//读取缓存,若缓存不存在,返回def,若没有设置默认返回值,则返回undefined
getStorageSync:function(k,def){
var deadtime = parseInt(wx.getStorageSync(k + postfix))
if (deadtime) {
if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
wx.removeStorageSync(k);
wx.removeStorageSync(k + postfix);
if (def) { return def; } else { return; }
}
}
var res = wx.getStorageSync(k);
if (res) {
return res;
} else if(def){
return def;
}else{
return;
}
}