uni-app设置缓存过期时间的操作方法
作者:Microi风闲
一、介绍
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
uni-app在开发者数量、案例、跨端抹平度、扩展灵活性、性能体验、周边生态、学习成本、开发成本等8大关键指标上拥有更强的优势。
二、功能框架图
从下面 uni-app
功能框架图可看出, uni-app
在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。
三、前言
uniapp 官方内置了通用的内置的缓存组件 uni.setStorage(OBJECT) ,但是并没有内置缓存过期时间配置项,我们可以自行来处理实现。本篇内容处理讲解如何设置缓存过期时间,顺便讲一下滑动缓存的解决方案。
四、官方API
4.1 uni.setStorage(OBJECT)
将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。
HarmonyOS Next 兼容性
HarmonyOS Next |
---|
HBuilderX 4.23 |
OBJECT 参数说明
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
data | Any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
参数 HarmonyOS Next 兼容性
名称 | HarmonyOS Next 兼容性 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | - | ||||||||||||
|
示例
uni.setStorage({ key: 'storage_key', data: 'hello', success: function () { console.log('success'); } });
注意
uni-
、uni_
、dcloud-
、dcloud_
为前缀的key,为系统保留关键前缀。如uni_deviceId
、uni_id_token
,请开发者为key命名时避开这些前缀。
4.2 uni.setStorageSync (KEY,DATA)
将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
data | Any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |
try { uni.setStorageSync('storage_key', 'hello'); } catch (e) { // error }
4.3 uni.getStorage(OBJECT)
从本地缓存中异步获取指定 key 对应的内容。
HarmonyOS Next 兼容性
HarmonyOS Next |
---|
HBuilderX 4.23 |
OBJECT 参数说明
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
success | Function | 是 | 接口调用的回调函数,res = {data: key对应的内容} |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
参数 HarmonyOS Next 兼容性
名称 | HarmonyOS Next 兼容性 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
options | - | ||||||||||
|
GetStorageSuccess 的属性值
名称 | HarmonyOS Next 兼容性 |
---|---|
data | - |
success 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
data | Any | key 对应的内容 |
示例
uni.getStorage({ key: 'storage_key', success: function (res) { console.log(res.data); } });
4.4 uni.getStorageSync(KEY)
从本地缓存中同步获取指定 key 对应的内容。
HarmonyOS Next 兼容性
HarmonyOS Next |
---|
HBuilderX 4.23 |
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
参数 HarmonyOS Next 兼容性
名称 | HarmonyOS Next 兼容性 |
---|---|
key | - |
示例
try { const value = uni.getStorageSync('storage_key'); if (value) { console.log(value); } } catch (e) { // error }
五、自定义过期时间
通过上面的官方API文档也看到了,并没有缓存过期时间配置项。那我们自己写一个吧。核心原理就是将缓存值改成 object ,然后将时间戳一并存入缓存,下次使用时先判断下时间戳是否过期。
以下是一个示例,展示如何设置缓存并在一定时间后过期:
// 设置缓存 function setCache(key, value, expireSeconds) { const currentTime = Date.now(); const expireTime = currentTime + expireSeconds * 1000; // 转换为毫秒 uni.setStorage({ key: key, data: { value: value, expireTime: expireTime }, success: function() { console.log('缓存设置成功'); } }); } // 获取缓存 function getCache(key) { const res = uni.getStorageSync(key); if (res && res.expireTime > Date.now()) { return res.value; } else { uni.removeStorage({ key: key, success: function() { console.log('缓存已过期,已移除'); } }); return null; // 缓存过期,返回null } } // 使用示例 const key = 'myCacheKey'; const value = 'myCacheValue'; const expireSeconds = 30; // 缓存30秒 setCache(key, value, expireSeconds); // 稍后获取缓存 const cachedValue = getCache(key); console.log(cachedValue); // 缓存过期时会打印null
六、滑动缓存解决方案
首先声明,在前端做数据缓存是 不可控的 ,也就是说 不能保证 数据的 实时性 。这种场景只适用于那些不经常变动、实时性要求不高的数据缓存。
大致流程如下:
1)先判断数据是否已缓存,如果已缓存再判断缓存是否过期,如果未过期则返回缓存数据,同时异步拉取api接口数据并做 异步缓存 。
2)如果缓存不存在则同步拉取api接口数据,顺便执行 异步缓存 操作。
3)读取缓存时要使用 同步缓存 读取,以保证后续业务的调用。
4)缓存需要设置 过期时间 ,至于过期时间设置多久根据你业务需求。
以上就是uni-app设置缓存过期时间的操作方法的详细内容,更多关于uni-app设置缓存过期时间的资料请关注脚本之家其它相关文章!