小程序缓存封装 storage

复制代码
const postfix = '_expiry' // 缓存有效期后缀   

module.exports = {
  /**  
   * 设置缓存   
   * @param  {[type]} k [键名]  
   * @param  {[type]} v [键值]  
   * @param  {[type]} t [时间、单位秒]  
   */
  set(k, v, t) {
    uni.setStorageSync(k, v)
    const seconds = parseInt(t)
    if (seconds > 0) {
      let timestamp = Date.parse(new Date())
      timestamp = timestamp / 1000 + seconds
      uni.setStorageSync(k + postfix, timestamp + '')
    } else {
      uni.removeStorageSync(k + postfix)
    }
  },

  /**  
   * 获取缓存   
   * @param  {[type]} k   [键名]  
   * @param  {[type]} def [获取为空时默认]  
   */
  get(k, def) {
    const deadtime = parseInt(uni.getStorageSync(k + postfix))
    if (deadtime) {
      if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
        if (def) {
          return def
        } else {
          return false
        }
      }
    }
    const res = uni.getStorageSync(k)
    if (res) {
      return res
    }
    if (def == undefined || def == "") {
      def = false
    }
    return def
  },

  /**
   * 删除指定缓存
   * @param {Object} k
   */
  remove(k) {
    uni.removeStorageSync(k)
    uni.removeStorageSync(k + postfix)
  },

  /**  
   * 清理所有缓存  
   * @return {[type]} [description]  
   */
  clear() {
    uni.clearStorageSync()
  }
}

更多请查看 人间且慢行 | 前端网站大全 | web前端开发

相关推荐
Java成神之路-8 分钟前
Spring 整合 MyBatis 全流程详解(附 Junit 单元测试实战)(Spring系列6)
spring·junit·mybatis
希望永不加班12 分钟前
SpringBoot 整合 Redis 缓存
spring boot·redis·后端·缓存·wpf
We་ct12 分钟前
JS核心难点解析:变量提升、作用域、Promise、this与类型转换
开发语言·前端·javascript·面试·作用域·类型转化·变量提升
cch891820 分钟前
易语言VS VUE:编程工具终极对决
前端·javascript·vue.js
zz-zjx29 分钟前
redis手动安装主从+哨兵
数据库·redis·缓存
ZC跨境爬虫37 分钟前
DES、AES、RSA 加密算法详解(含 JS/Python 实现 + 逆向实战案例)
前端·javascript·python
sunwenjian88642 分钟前
Spring aop 五种通知类型
java·前端·spring
HIT_Weston44 分钟前
36、【Agent】【OpenCode】本地代理(JavaScript 脚本)
开发语言·javascript·ecmascript
程序员 沐阳1 小时前
原型链:JavaScript 世界的家族族谱
开发语言·javascript·ecmascript
IT东1 小时前
Vue 多环境部署全解析:解决测试与生产一致性难题
前端·javascript·vue.js