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

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

浏览量:1727 时间: 来源:仙_

后台用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}

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

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎