簡介git
微信小程序提供了緩存的api,包括同步和異步兩種,具體api很少說明,可自行查看官方文檔json
如今微信小程序緩存api存在一個問題就是沒有設定過時時間,下面給你們介紹一下對小程序緩存的二次封裝,使其支持設定過時時間小程序
實現方法
微信小程序
先聲明,這個並不是原創方法,只是查找資料的時候看到的,以爲挺有用,就記錄下來,也算轉播給你們api
原做連接:https://gitee.com/JiangMu/wcache,侵刪數組
微信小程序緩存是永久性,實際開發中須要定製時效性緩存;所以作了二次開發緩存
設置緩存-----------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等同理。異步
function put(k, v, t) { wx.setStorageSync(k, v) 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) } }
讀取緩存-----get(k, def)-------def(自定義讀取失敗的默認值) k爲key,def爲可選參數,表示無緩存數據時返回值(支持字符串、json、數組、boolean等等)spa
如讀取k緩存,則調用get('k');若想要無緩存時,返回默認值則get('k','默認值'),支持各個數據類型。
function get(k, def) { var deadtime = parseInt(wx.getStorageSync(k + dtime)) if (deadtime) { if (parseInt(deadtime) < Date.parse(new Date()) / 1000) { if (def) { return def; } else { return; } } } var res = wx.getStorageSync(k); if (res) { return res; } else { return def; } }
remove(k)移除某個key
clear()清空全部key
完整代碼:
var dtime = '_deadtime'; function put(k, v, t) { wx.setStorageSync(k, v) 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) } } function get(k, def) { var deadtime = parseInt(wx.getStorageSync(k + dtime)) if (deadtime) { if (parseInt(deadtime) < Date.parse(new Date()) / 1000) { if (def) { return def; } else { return; } } } var res = wx.getStorageSync(k); if (res) { return res; } else { return def; } } function remove(k) { wx.removeStorageSync(k); wx.removeStorageSync(k + dtime); } function clear() { wx.clearStorageSync(); } module.exports = { put: put, get: get, remove: remove, clear: clear, }
小結
本篇主要是引用原做者的東西,就當我是小小搬運工吧,畢竟如今找資料不太好找,就當作轉播了!!!