zoukankan      html  css  js  c++  java
  • 小程序缓存二开(带有效时间)

    微信小程序缓存是永久性,实际开发中需要定制时效性缓存;因此做了二次开发

    设置缓存-----------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

  • 相关阅读:
    安装7-Zip后,鼠标右键菜单出现选项(CRC SHA)
    Windows添加右键菜单【转载】
    基于Visual Studio开发C++/Qt项目的使用笔记
    数组中的重复数字
    zookeeper的通知机制
    zookeeper有几种部署模式? zookeeper 怎么保证主从节点的状态同步?
    什么是springcloud?springcloud断路器的作用是什么?springcloud的核心组件有什么?
    springboot实现热部署的几种方式
    springboot的核心配置文件
    什么是springboot?为什么要用springboot?
  • 原文地址:https://www.cnblogs.com/wesky/p/8493341.html
Copyright © 2011-2022 走看看