uni-app设置缓存过期时间的操作方法

 更新时间:2024年12月10日 10:17:16   作者:Microi风闲  
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序,本文给大家介绍了uni-app设置缓存过期时间的操作方法,需要的朋友可以参考下

一、介绍 

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 参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key
dataAny需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

参数 HarmonyOS Next 兼容性

名称HarmonyOS Next 兼容性
options-
名称HarmonyOS Next 兼容性
key-
data-
success-
fail-
complete-

示例

uni.setStorage({
	key: 'storage_key',
	data: 'hello',
	success: function () {
		console.log('success');
	}
});

注意

  • uni-uni_dcloud-dcloud_为前缀的key,为系统保留关键前缀。如uni_deviceIduni_id_token,请开发者为key命名时避开这些前缀。

4.2 uni.setStorageSync (KEY,DATA)

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

参数说明

参数类型必填说明
keyString本地缓存中的指定的 key
dataAny需要存储的内容,只支持原生类型、及能够通过 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 参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key
successFunction接口调用的回调函数,res = {data: key对应的内容}
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

参数 HarmonyOS Next 兼容性

名称HarmonyOS Next 兼容性
options-
名称HarmonyOS Next 兼容性
key-
success-
fail-
complete-

GetStorageSuccess 的属性值

名称HarmonyOS Next 兼容性
data-

success 返回参数说明

参数类型说明
dataAnykey 对应的内容

示例

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

参数说明

参数类型必填说明
keyString本地缓存中的指定的 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设置缓存过期时间的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript Array Flatten 与递归使用介绍

    JavaScript Array Flatten 与递归使用介绍

    用 JavaScript 将 [1,2,3,[4,5, [6,7]], [[[8]]]] 这样一个 Array 变成 [1,2,3,4,5, 6,7,8] 呢?传说中的 Array Flatten
    2011-10-10
  • JS如何将秒数转化为时分秒的形式

    JS如何将秒数转化为时分秒的形式

    在实际工作中经常会遇见把秒数转化为时分秒的问题,如何处理呢?下面这篇文章主要给大家介绍了关于JS如何将秒数转化为时分秒形式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 微信小程序实现复选框效果

    微信小程序实现复选框效果

    这篇文章主要为大家详细介绍了微信小程序实现复选框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 第一篇初识bootstrap

    第一篇初识bootstrap

    Bootstrap是twitter的工程师在业余时间开发的,是一款目前非常流行的前端框架。本文给大家介绍第一篇初识bootstrap的相关知识,非常不错具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • 一文了解JavaScript中call/apply/bind的使用

    一文了解JavaScript中call/apply/bind的使用

    这篇文章主要介绍了一文了解JavaScript中call/apply/bind的使用,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 关于JSON与JSONP简单总结

    关于JSON与JSONP简单总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。而JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”。下面是小编总结的关于JSON与JSONP知识,感兴趣的朋友一起看下吧
    2016-08-08
  • ES 空值合并运算符??与可选链?.的使用小结

    ES 空值合并运算符??与可选链?.的使用小结

    本文主要介绍了ES 空值合并运算符??与可选链?.的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • js实现酷炫倒计时动画

    js实现酷炫倒计时动画

    这篇文章主要为大家详细介绍了js实现酷炫倒计时动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • mui back 返回刷新页面的实例

    mui back 返回刷新页面的实例

    下面小编就为大家分享一篇mui back 返回刷新页面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 解决Jstree 选中父节点时被禁用的子节点也会选中的问题

    解决Jstree 选中父节点时被禁用的子节点也会选中的问题

    下面小编就为大家分享一篇解决Jstree 选中父节点时被禁用的子节点也会选中的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论