后端一直用redis作为缓存,前端用浏览器自带的缓存方法,但没有过期时间,于是自己封装了个js缓存方法,实现了类似redis一样的缓存有效期。原理就是用分隔符把缓存有效期拼到value里面,取值的时候再切割,对比有效期,过期了直接删除。
//缓存,默认有效期7天
function cache(key, value, seconds) {
var timestamp = Date.parse(new Date()) / 1000
if (key && value === null) {
//删除缓存
uni.removeStorageSync(key);
} else if (key && value) {
//设置缓存
if (!seconds) {
var expire = timestamp + (3600 * 24 * 7)
}else{
var expire = timestamp + seconds
}
value = value + "|" + expire
uni.setStorageSync(key, value);
} else if (key) {
//获取缓存
var val = uni.getStorageSync(key);
var tmp = val.split("|")
if (!tmp[1] || timestamp >= tmp[1]) {
uni.removeStorageSync(key)
return false
} else {
return tmp[0]
}
} else {
alert("key不能空")
}
}
上面的例子是采用uniapp的接口写的,如果是h5可以把uni.getStorageSync换成localStorage.getitem和localStorage.setitem

1009

被折叠的 条评论
为什么被折叠?



