微信小程序设置wx.getStorage的有效时间,设置缓存过期时间

本文介绍了一种在微信小程序中实现缓存数据过期的方法,通过自定义标识结合当前时间戳,实现了缓存的有效期控制,避免了数据长期占用空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后台用redis缓存一些数据,有些数据需要给它一个时效性,比如token,用着挺方便的,写小程序的时候也想有个这种能设置过期时间的东西,可是官方没有直接提供这方面的接口,于是就总(抄)结(袭)其他大牛的一些技巧,简单的封装了一个工具类

好了,废话不多说了,先普及一下小程序的缓存基础知识吧

将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

划重点呀

  1. 相同的key会覆盖;

  2. 用户可以主动删除缓存;

  3. 缓存数据有10MB!

localStorage 以用户维度隔离,说到隔离,我就想起之前有几个同学说A用户的数据被B用户拿到了,当时我有点惊讶,小程序的数据缓存是不会窜用户的吧,后来大半夜的帮那位同学找bug,原来是后台的一个判断错了,还有一个是在真机调试的时候发生,最后原因是因为这里,勾选了使用工具端的Storage,勾了这个选项,缓存就共享了

 

又说了一些题外话,咳咳,继续继续

localStorage 以用户维度隔离

同一台设备上,同一个小程序,A 用户无法读取到 B 用户的数据。

其实这点我刚开始接触小程序缓存的时候也分不清,因为怕数据混乱,然后每次进小程序的时候都先清除全部缓存,现在感觉当时好2啊

缓存的一些详细的用法我这里就不讲了哈,我主要还是讲讲设置缓存的有效期,详细还请各位同学去小程序官网翻API

https://developers.weixin.qq.com/miniprogram/dev/api/wx.setStorage.html

思路其实就是,封装一个方法,方法的参数就是 键key,值value,时间time,里面存两个缓存,一个存你要存的数据,一个用来存时间,这个时间怎么存呢,自定义一个标识(我用的是“redis”)+key值

取值的也是一样的,封装一个方法,参数只需要key就行了,先用自定义的标识+key取出时间,然后比较现在的时间,如果大于现在的时间,说明还没过期,然后返回key对应的value,如果小于现在的时间,说明过期了,删除key对应的数据,返回null

下面贴个代码,同学们即可C+V使用

 

 redis.js

var redis= "redis"

/**
 * 设置
 * k 键key
 * v 值value
 * t 秒
 */
function put(k, v, t) {
  wx.setStorageSync(k, v)
  var seconds = parseInt(t)
  if (seconds > 0) {
    var newtime = Date.parse(new Date())
    newtime = newtime / 1000 + seconds;
    wx.setStorageSync(k + redis, newtime + "")
  } else {
    wx.removeStorageSync(k + redis)
  }
}
/**
 * 获取
 * k 键key
 */
function get(k) {
  var deadtime = parseInt(wx.getStorageSync(k + redis))
  if (deadtime) {
    if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
      wx.removeStorageSync(k);
      console.log("过期了")
      return null
    }
  }
  var res=wx.getStorageSync(k)
  if(res){
    return res
  }else{
    return null
  }
}

/**
 * 删除
 */
function remove(k) {
  wx.removeStorageSync(k);
  wx.removeStorageSync(k + redis);
}

/**
 * 清除所有key
 */
function clear() {
  wx.clearStorageSync();
}
module.exports={
  put,
  get,
  remove,
  clear
}

这样一个简单的小程序设置缓存过期时间就完成了,不足之处还请多谢指正

 

微信小程序开发过程中,正确使用wx.setStoragewx.getStorage接口进行数据的异步存取是提升用户体验的关键。为了帮助你更好地理解和掌握这一技巧,推荐查看《微信小程序本地数据存储:wx.setStorage实例解析》。这篇文章深入解析了wx.setStoragewx.getStorage的使用方法,以及在项目中的实战应用。 参考资源链接:[微信小程序本地数据存储:wx.setStorage 实例解析](https://wenku.csdn.net/doc/6401ad38cce7214c316eebae?spm=1055.2569.3001.10343) 首先,wx.setStorage接口提供了一种异步的方式来存储数据。例如,如果你想存储一个字符串,可以这样使用: ```javascript wx.setStorage({ key: 'user', data: 'admin', success (res) { console.log('存储成功', res) }, fail (res) { console.log('存储失败', res) } }) ``` 在这个例子中,我们通过`key`来指定存储项的名称,`data`来指定要存储的数据。异步操作的好处是它不会阻塞页面的其他操作,提升了程序的响应速度。 获取数据时,可以使用wx.getStorage接口: ```javascript wx.getStorage({ key: 'user', success (res) { console.log('获取成功', res.data) }, fail (res) { console.log('获取失败', res) } }) ``` 注意,当你从本地存储中获取数据时,需要确保数据类型的处理。例如,如果你存储的是一个对象,获取的时候也应该按照对象来处理。 此外,微信小程序对本地存储的数据类型支持非常灵活,包括但不限于字符串、数组、对象等。但是,需要注意的是,虽然小程序的存储容量最大为10MB,但实际上过多依赖本地存储可能会影响小程序的性能。因此,合理地管理本地缓存,必要时与服务器端数据进行同步和备份,是一个良好的开发习惯。 《微信小程序本地数据存储:wx.setStorage实例解析》不仅提供了这些基本的使用方法,还通过实例来展示如何在实际项目中应用这些接口,帮助开发者更好地利用本地存储功能。如果你希望进一步提升你的小程序开发能力,这篇文章将是一个不可多得的资源。 参考资源链接:[微信小程序本地数据存储:wx.setStorage 实例解析](https://wenku.csdn.net/doc/6401ad38cce7214c316eebae?spm=1055.2569.3001.10343)
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值