二次封装的缓存框架wCache(支持缓存时间、默认值)--微信小程序
来源:互联网 发布:windows系统编程 环境 编辑:程序博客网 时间:2024/06/05 17:06
一、前言
开发客户端时常会用到一些非永久缓存的需求,而微信缓存只能按key永久缓存;其次,当读取缓存失败时,有时需要给个默认值,所以得二次判断下,今天想了一下何不封装一个缓存框架。
二、支持方法
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) { // console.log(k); wx.setStorageSync(k, v) var seconds = parseInt(t); if (seconds > 0) { var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000 + seconds; // console.log(timestamp); 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,移除也是不会报错的。
四、如何使用
- 下载src文件夹内wCache.js文件
- 需要使用的js文件头加入var wc = require(‘../../src/wcache.js’)。
- var s=wc.get(‘k’, ‘你好’)、wc.put(‘k’, ‘string你好啊’)等;
使用例子
get(e) { this.setData({ text: null }); switch (e.currentTarget.dataset.type) { case "def": this.setData({ text: wc.get('k') }); break; case "string": this.setData({ text: wc.get('k', '你好') }); break; case "json": this.setData({ text: wc.get('k', { "a": "1" }) }); break; } } put(e) { console.log(e); switch (e.currentTarget.dataset.type) { case "string": wc.put('k', 'string你好啊'); break; case "json": wc.put('k', { "b": "3" }, 2); break; case "list": wc.put('k', [1, 2, 3]); break; case "boolean": wc.put('k', true); break; } wx.showToast({ title: '存储成功', duration: 500, }) }
源码地址:https://github.com/qq273681448/wCache
觉得好的话,记得关注我哦!
csdn博客:
http://blog.csdn.net/qq273681448/
简书:
http://www.jianshu.com/users/ef6207f116a2/timeline
掘金:
https://juejin.im/user/57cd55218ac247006459c40c
Github:
https://github.com/qq273681448
- 二次封装的缓存框架wCache(支持缓存时间、默认值)--微信小程序
- volley中ImageLoader的二次封装(图片缓存)
- Imageloader 使用与二次封装自动缓存
- Volley二次封装,实现网络请求缓存
- 支持连接池和结果集缓存的MySQL数据库JDBC通用框架的轻量级封装(二)——向上封装
- Volley框架的二次封装
- Volley框架的二次封装
- 微信小程序基本的开发框架抽取,包括网络请求的二次封装,页面状态管理,常见页面模板封装
- 支持连接池和结果集缓存的MySQL数据库JDBC通用框架的轻量级封装(一)——粗略实现
- Android-Volley网络通信框架(二次封装数据请求和图片请求(包括处理请求队列和图片缓存))
- Bitmap二次采样,Android中的缓存处理及异步加载图片类的封装
- 微信小程序网络二次封装
- OKhttp3二次完美封装,内含日志,缓存拦截器
- 自己封装的一个iphone上的缓存,支持内存缓存以及磁盘缓存,实际项目已经应用。
- 缓存技术,封装好的缓存类
- 图片的二次采样三级缓存策略
- 微信小程序缓存-------缓存时效性
- 微信小程序缓存的详解
- 实习第二天: el表达式学习笔记(内容结合百度学习)
- tensorflow mnist
- HDOJ 2068 RPG的错排
- Oracle中NVL、NVL2、DECODE函数的用法
- Java 并发编程知识点(四)
- 二次封装的缓存框架wCache(支持缓存时间、默认值)--微信小程序
- Google2016 面试题 吹气球 区间dp
- uva 103
- 【mfc】excel读写——libxl.lib库
- hdu1003 Max Sum
- 阿里云搭建基于MatlabMPI的集群(六):NFS文件共享系统安装与配置
- tensorflow学习笔记(四十二):输入流水线
- Android 控件ImageView ScaleType详解
- html中a标签如何设置行宽高