微信小程序--緩存,支持過期時間的二次開發封裝


簡介

微信小程序提供了緩存的api,包括同步和異步兩種,具體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等等)

如讀取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,
}

小結

本篇主要是引用原作者的東西,就當我是小小搬運工吧,畢竟現在找資料不太好找,就當做轉播了!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM