美文网首页
pmitCache微信小程序缓存工具类

pmitCache微信小程序缓存工具类

作者: pmit_亿万富翁团队 | 来源:发表于2018-06-21 09:48 被阅读0次

    一、前言

    开发过程中经常会使用到微信缓存,而微信缓存默认只能按key永久缓存,为实现设置缓存时间,根据原生小程序api封装此工具类

    代码片段

    二、支持方法

    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等同理。

    get(k, def)

    k:key
    def:表示无缓存数据时返回值(支持字符串、json、数组、boolean等等)

    如读取k缓存,则调用get(‘k’);若想要无缓存时,返回默认值则get(‘k’,’默认值’),支持各个数据类型。

    remove(k)

    移除某个key

    clear()

    清空所有key

    其他方法

    使用wx原生的即可。

    三、工具类讲解

    put(k, v, t)

    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 + postfix, timestamp + "")
    
      } else {
    
        wx.removeStorageSync(k + postfix)
    
      }
    
    }
    

    先存储key的数据(字符串、数组、json),再判断过期时间是否大于0,当大于0时,存储key+一个后缀,内容为当前时间戳(单位秒)+有效时间t。

    get(k, def)

    function get(k, def) {
    
      var deadtime = parseInt(wx.getStorageSync(k + postfix))
    
      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;
    
      }
    
    }
    

    get方法,先通过key+一个后缀得到时间戳,如果时间戳存在,切小于当前时间,说明过期;【那么,当有默认值时返回默认值(包含字符串、数组、json),否则返回空。】当没过期时,正常读取key的内容,key存在时正常返回;否则返回默认值,当不存在默认值时返回空。

    其他方法

    function remove(k) {
    
      wx.removeStorageSync(k);
    
      wx.removeStorageSync(k + postfix);
    
    }
    
    function clear() {
    
      wx.clearStorageSync();
    
    }
    

    remove(k)需要移除2个key,因为存储的时候,可能存了时间戳,当然即使不存在key,移除也是不会报错的。

    相关文章

      网友评论

          本文标题:pmitCache微信小程序缓存工具类

          本文链接:https://www.haomeiwen.com/subject/ysfqyftx.html