小程序缓存二开(带有效时间)
微信小程序缓存是永久性,实际开发中需要定制时效性缓存;因此做了二次开发
设置缓存-----------put(k, v, t) k为key,v为具体内容(支持字符串、json、数组、boolean等等),t为可选参数表示有效时间(单位:秒)如存储k为123过期时间1秒,
则调用put('k', '123', 1)方法;若永久存储调用put('k', '123') 永久保存json:put('k', {"a":"1"}),数组、boolean等同理。
1 function put(k, v, t) { 2 wx.setStorageSync(k, v) 3 var seconds = parseInt(t); 4 if (seconds > 0) { 5 var timestamp = Date.parse(new Date()); 6 timestamp = timestamp / 1000 + seconds; 7 wx.setStorageSync(k + dtime, timestamp + "") 8 } else { 9 wx.removeStorageSync(k + dtime) 10 } 11 }
读取缓存-----get(k, def)-------def(自定义读取失败的默认值) k为key,def为可选参数,表示无缓存数据时返回值(支持字符串、json、数组、boolean等等)
如读取k缓存,则调用get('k');若想要无缓存时,返回默认值则get('k','默认值'),支持各个数据类型。
1 function get(k, def) { 2 var deadtime = parseInt(wx.getStorageSync(k + dtime)) 3 if (deadtime) { 4 if (parseInt(deadtime) < Date.parse(new Date()) / 1000) { 5 if (def) { return def; } else { return; } 6 } 7 } 8 var res = wx.getStorageSync(k); 9 if (res) { 10 return res; 11 } else { 12 return def; 13 } 14 }
代码如下
1 var dtime = '_deadtime'; 2 function put(k, v, t) { 3 wx.setStorageSync(k, v) 4 var seconds = parseInt(t); 5 if (seconds > 0) { 6 var timestamp = Date.parse(new Date()); 7 timestamp = timestamp / 1000 + seconds; 8 wx.setStorageSync(k + dtime, timestamp + "") 9 } else { 10 wx.removeStorageSync(k + dtime) 11 } 12 } 13 14 function get(k, def) { 15 var deadtime = parseInt(wx.getStorageSync(k + dtime)) 16 if (deadtime) { 17 if (parseInt(deadtime) < Date.parse(new Date()) / 1000) { 18 if (def) { return def; } else { return; } 19 } 20 } 21 var res = wx.getStorageSync(k); 22 if (res) { 23 return res; 24 } else { 25 return def; 26 } 27 } 28 29 function remove(k) { 30 wx.removeStorageSync(k); 31 wx.removeStorageSync(k + dtime); 32 } 33 34 function clear() { 35 wx.clearStorageSync(); 36 } 37 38 module.exports = { 39 put: put, 40 get: get, 41 remove: remove, 42 clear: clear, 43 }
转载:https://gitee.com/JiangMu/wcache