小程序官方API提供了設(shè)置緩存和讀取緩存的api蚪燕,不過都是永久緩存窜骄,除非用戶手動清除锦募,否則會一直留在用戶手機 。而我們都知道邻遏,本地緩存最大為10M糠亩。實際開發(fā)過程中,或者為了給用戶節(jié)省內(nèi)存党远,或者為了設(shè)置信息即時性削解,我們需要對部分緩存設(shè)置時效性,在它到期之后自動刪除沟娱。
一氛驮、關(guān)于緩存方法微信官方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
wx.clearStorageSync() ...
關(guān)于具體的使用方法請去看官方文檔
二、下面就是記錄關(guān)于設(shè)置緩存時效性的方法济似,說到底也就是對這些緩存方法進行二次封裝
?//設(shè)置時效緩存矫废,time為有效時間,(單位:小時砰蠢,不填則默認24小時)
function setStorageSyncHour(key, value, time) {
? wx.setStorageSync(key, value)
? 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(key + 'dtime', timestamp + "")
? } else {
? ? wx.removeStorageSync(key + 'dtime')
? }
}
//設(shè)置時效緩存蓖扑,time為有效時間,(單位:秒台舱,不填則默認3600s)
function setStorageSyncSecond(key, value, time) {
? wx.setStorageSync(key, val)
? var t = time ? time : 3600;
? var seconds = parseInt(t);
? if (seconds > 0) {
? ? var timestamp = Date.parse(new Date());
? ? timestamp = timestamp / 1000 + seconds;
? ? wx.setStorageSync(k + 'dtime', timestamp + "")
? } else {
? ? wx.removeStorageSync(k + 'dtime')
? }
}
//讀取緩存律杠,若緩存不存在潭流,返回def,def為可選參數(shù)柜去,表示無緩存數(shù)據(jù)時返回值(支持字符串灰嫉、json、數(shù)組嗓奢、boolean等等)
function getStorageSyncTime(key, def) {
? var deadtime = parseInt(wx.getStorageSync(key + 'dtime'))
? if (deadtime) {
? ? if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
? ? ? wx.removeStorageSync(key);
? ? ? wx.removeStorageSync(key + 'dtime');
? ? ? if (def) { return def; } else { return; }
? ? }
? }
? var res = wx.getStorageSync(key);
? if (res) {
? ? return res;
? } else if (def) {
? ? return def;
? } else {
? ? return;
? }
}
module.exports = {
? setStorageSyncHour: setStorageSyncHour,
? setStorageSyncSecond: setStorageSyncSecond,
? getStorageSyncTime: getStorageSyncTime
}
這里比較時間的方法就是使用parse方法讼撒。
parse() 方法可解析一個日期時間字符串,并返回 1970/1/1 午夜距離該日期時間的毫秒數(shù)股耽。就可以對時間進行比較