uniapp 详细封装缓存定时过期方法,详细使用过程

该文章介绍了一个在uniapp项目中处理缓存过期问题的方法,特别是在与阿里OSS集成时,需要在上传文件前获取授权。作者封装了一个函数,允许设置或获取带有过期时间戳的缓存,同时支持JSON数据的存储和字符串化。当缓存过期或无效时,函数会自动删除并返回空字符串。
摘要由CSDN通过智能技术生成

 最近在开发一个uniapp的项目,中间我们需要给缓存定时,为了解决这个问题,封装了一个方法用来解决这个问题,当时遇到这个问题是因为在项目中要给阿里的OSS上传文件,上传之间先要向服务端请求获取授权,授权我们当时设定了30分钟过期,所以就需要给缓存定时过期了

后来发现存储的数据并不是简单的字符串,然后又把JSON处理成了字符串,一下是源代码和使用过程

 

<script>

// 缓存函数,设置或获取缓存值,带有过期时间戳
// key: 缓存的键名,必填
// value: 缓存的值,选填,如果为空则表示获取缓存,如果不为空则表示设置缓存
// seconds: 缓存的过期时间,单位为秒,选填,默认为28天
function cache(key, value, seconds) {
  // 获取当前时间戳,单位为秒
  const timestamp = Date.parse(new Date()) / 1000;
  console.log(`${timestamp}===${key}`);
  // 如果key为空,直接返回
  if (!key) {
    console.log("key不能空");
    return;
  }
  // 如果value为空,表示获取缓存
  if (value === null) {
    // 获取缓存值,并按照"|"分割成数组
    const val = uni.getStorageSync(key);
    const tmp = val.split("|");
    // 如果数组的第二个元素不存在或者小于等于当前时间戳,表示缓存已过期,删除缓存并返回空字符串
    if (!tmp[1] || timestamp >= tmp[1]) {
      console.log("key已失效");
      uni.removeStorageSync(key);
      return "";
    }
    // 否则表示缓存未过期,返回数组的第一个元素,即缓存值
    else {
      console.log("key未失效");
      return tmp[0];
    }
  }
  // 如果value不为空,表示设置缓存
  else {
    // 如果seconds为空,则使用默认值28天,否则使用传入的值
    const expire = seconds ? timestamp + seconds : timestamp + 3600 * 24 * 28;
    // 将缓存值和过期时间戳用"|"连接成一个字符串,并存入缓存
    value = `${value}|${expire}`;
    uni.setStorageSync(key, value);
  }
}


</script>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间在飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值