美文网首页
微信小程序设置缓存失效时间及读取缓存

微信小程序设置缓存失效时间及读取缓存

作者: _伦 | 来源:发表于2019-07-10 13:56 被阅读0次

小程序官方API提供了设置缓存和读取缓存的api,不过都是永久缓存,除非用户手动清除,否则会一直留在用户手机 。而我们都知道,本地缓存最大为10M。实际开发过程中,或者为了给用户节省内存,或者为了设置信息即时性,我们需要对部分缓存设置时效性,在它到期之后自动删除。

一、关于缓存方法微信官方api如下

1.异步缓存

wx.setStorage(OBJECT)

wx.getStorage(OBJECT)

wx.getStorageInfo(OBJECT)

wx.removeStorage(OBJECT)

wx.clearStorage()

2.同步缓存

wx.setStorageSync(KEY,DATA)

wx.getStorageSync(KEY)

wx.getStorageInfoSync

wx.clearStorageSync() ...

关于具体的使用方法请去看官方文档

二、下面就是记录关于设置缓存时效性的方法,说到底也就是对这些缓存方法进行二次封装

​//设置时效缓存,time为有效时间,(单位:小时,不填则默认24小时)

function setStorageSyncHour(key, value, time) {

  wx.setStorageSync(key, value)

  var t = time ? time : 24;

  var seconds = parseInt(t * 3600);

  if (seconds > 0) {

    var timestamp = Date.parse(new Date());

    timestamp = timestamp / 1000 + seconds;

    wx.setStorageSync(key + 'dtime', timestamp + "")

  } else {

    wx.removeStorageSync(key + 'dtime')

  }

}

//设置时效缓存,time为有效时间,(单位:秒,不填则默认3600s)

function setStorageSyncSecond(key, value, time) {

  wx.setStorageSync(key, val)

  var t = time ? time : 3600;

  var seconds = parseInt(t);

  if (seconds > 0) {

    var timestamp = Date.parse(new Date());

    timestamp = timestamp / 1000 + seconds;

    wx.setStorageSync(k + 'dtime', timestamp + "")

  } else {

    wx.removeStorageSync(k + 'dtime')

  }

}

//读取缓存,若缓存不存在,返回def,def为可选参数,表示无缓存数据时返回值(支持字符串、json、数组、boolean等等)

function getStorageSyncTime(key, def) {

  var deadtime = parseInt(wx.getStorageSync(key + 'dtime'))

  if (deadtime) {

    if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {

      wx.removeStorageSync(key);

      wx.removeStorageSync(key + 'dtime');

      if (def) { return def; } else { return; }

    }

  }

  var res = wx.getStorageSync(key);

  if (res) {

    return res;

  } else if (def) {

    return def;

  } else {

    return;

  }

}

module.exports = {

  setStorageSyncHour: setStorageSyncHour,

  setStorageSyncSecond: setStorageSyncSecond,

  getStorageSyncTime: getStorageSyncTime

}

这里比较时间的方法就是使用parse方法。

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。就可以对时间进行比较

相关文章

  • 微信小程序设置缓存失效时间及读取缓存

    小程序官方API提供了设置缓存和读取缓存的api,不过都是永久缓存,除非用户手动清除,否则会一直留在用户手机 。而...

  • pmitCache微信小程序缓存工具类

    一、前言 开发过程中经常会使用到微信缓存,而微信缓存默认只能按key永久缓存,为实现设置缓存时间,根据原生小程序a...

  • 微信小程序---缓存Storage

    在微信小程序中的缓存,如果我们不清除的话它会一直存在的,它分为设置缓存、获取缓存、清除某一缓存、清空所有缓存,分为...

  • 关于微信

    微信缓存线上解决方案 参考微信 webview 清理缓存方法html头文件设置常用之 设置缓存微信浏览为网站的缓存...

  • 微信小程序缓存-------缓存时效性

    在微信小程序中,数据缓存没有设置有效期的方法,只有本地缓存功能。 相应的api wx.setStorage(wx....

  • guavaCache本地缓存失效方案expireAfterWri

    Guava实现本地缓存,为了保证缓存一致性,本地缓存需要被动的失效(即设置失效时间)。Guava Cache有两种...

  • 缓存异常问题

    缓存雪崩 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间...

  • 微信小程序入门到实战(五)

    缓存 缓存的作用是为了加快数据的访问,小程序里面可以设置缓存(本地),设置缓存后,如果没有手动清除缓存的话,就会一...

  • Redis 四连发:缓存雪崩、穿透、预热、降级

    一.Redis缓存雪崩 Redis缓存雪崩和穿透乍一看好像差不多,概念容易混淆.缓存雪崩是指在我们设置缓存失效时间...

  • redis缓存雪崩和缓存穿透和缓存击穿

    缓存雪崩缓存雪崩是指设置缓存时采用了相同的过期时间,导致缓存在某一个时刻同时失效,或者缓存服务器宕机宕机导致缓存全...

网友评论

      本文标题:微信小程序设置缓存失效时间及读取缓存

      本文链接:https://www.haomeiwen.com/subject/dcqhkctx.html