【愚公系列】《微信小程序与云开发从入门到实践》040-小程序缓存工具
标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
🚀前言
在移动应用的开发中,性能与用户体验始终是重中之重。对于小程序来说,如何有效管理数据的存储与访问,直接影响到应用的响应速度和流畅度。小程序缓存工具应运而生,它为开发者提供了一种高效的方式来存储和管理用户数据,从而提升小程序的性能。
在本篇文章中,我们将深入探讨小程序缓存工具的基本概念和应用场景。我们将介绍常用的缓存策略,包括本地缓存的使用、数据的读取与更新、以及缓存失效的处理方式。同时,我们还会分享一些最佳实践,帮助开发者在实际项目中合理利用缓存工具,优化小程序的性能与用户体验。
🚀一、小程序缓存工具
🔎1.小程序的缓存存储:Storage
在小程序开发中,Storage
提供了便捷的缓存存储功能,适用于存储较为简单和结构化的数据(例如用户登录状态、用户信息等)。与文件存储不同,Storage
具有较低的开发成本,并且提供了多种简便的存取方式。
Storage 的特点
-
存储空间限制:
- 每个微信用户在同一小程序中的
Storage
空间上限为 10MB。 - 同一小程序中的不同用户数据互相隔离,不能共享数据。
- 同一程序中,不同用户的数据也不可互相访问。
- 每个微信用户在同一小程序中的
-
存储数据的场景:
- 适用于需要存储简单的用户数据,如用户的登录状态、用户基本信息等。
- 数据存储在
Storage
中,除非用户手动删除或系统清理,否则会长期有效。
-
数据存储与取回:
- 小程序提供了异步和同步两种存取方式,使用起来非常方便。
- 存储数据时,
Storage
支持多种原生数据类型,如String
、Date
等,也可以将 JavaScript 对象序列化为 JSON 字符串存储。
🔎2.Storage 的常用 API
🦋2.1 存储数据
wx.setStorage
用于将数据存储到缓存中。常用参数包括缓存的 key
和对应的 data
,同时可以选择是否加密存储。
示例代码:
wx.setStorage({
key: "dataKey", // 缓存的 key
data: "dataContent", // 缓存的数据
encrypt: true, // 是否加密存储
success: () => {
console.log("存储成功");
},
fail: () => {
console.log("存储失败");
},
complete: () => {
// 存储完成
}
});
key
: 缓存的唯一标识符。data
: 要存储的数据,可以是各种原生类型,JavaScript 对象需要先序列化成 JSON 字符串。encrypt
: 设置是否对数据进行加密,默认值为false
。如果加密,则存储的数据会占用更多空间,但增强了数据安全性。
注意:单个
key
存储的数据最大长度为 1MB。
🦋2.2 读取数据
wx.getStorage
用于从缓存中读取数据,传入 key
来获取对应的数据。如果数据加密存储,读取时需要设置 encrypt: true
。
示例代码:
wx.getStorage({
key: "dataKey", // 缓存的 key
encrypt: true, // 是否解密
success: (res) => {
console.log("获取到数据:", res.data);
},
fail: () => {
console.log("读取数据失败");
},
complete: () => {
// 读取完成
}
});
🦋2.3 同步存储与读取
Storage
还提供了同步存储和读取的方法,这些方法会阻塞程序执行,但不支持加密存储。
示例代码:
// 同步存储
wx.setStorageSync("key", "data");
// 同步获取数据
let data = wx.getStorageSync("key");
🦋2.4 删除数据
如果某些缓存数据不再需要使用,可以手动删除缓存数据。提供异步和同步两种方法:
异步删除:
wx.removeStorage({
key: "key",
success: (res) => {
console.log("删除成功");
},
fail: () => {
console.log("删除失败");
},
complete: () => {
// 删除完成
}
});
同步删除:
wx.removeStorageSync('key');
🦋2.5 清空所有缓存数据
如果需要清除所有缓存数据,可以使用以下方法:
异步清除:
wx.clearStorage({
success: (res) => {
console.log("清空成功");
},
fail: () => {
console.log("清空失败");
},
complete: () => {
// 完成清空
}
});
同步清除:
wx.clearStorageSync();
🦋2.6 获取存储信息
可以通过 wx.getStorageInfo
获取当前 Storage
中存储的数据情况,包括已存储的所有 key
和当前占用的空间大小。
示例代码:
let res = wx.getStorageInfoSync();
console.log(res); // 获取存储信息
获取的信息包含以下内容:
keys
: 所有存储的key
数组。currentSize
: 当前占用空间大小,单位为 KB。limitSize
: 存储空间限制大小,单位为 KB。
异步获取存储信息:
wx.getStorageInfo({
success: (res) => {
console.log(res);
},
fail: () => {
console.log("获取存储信息失败");
},
complete: () => {
// 获取完成
}
});
表 9-17:wx.getStorageInfo
返回的结果对象属性
属性名 | 类型 | 说明 |
---|---|---|
keys |
数组 | 所有存储的 key |
currentSize |
数值 | 当前占用的空间大小,单位为 KB |
limitSize |
数值 | 存储空间的限制大小,单位为 KB |
🔎3.Storage
的优势与使用场景
-
优势:
- 使用简单:提供了异步和同步两种方式来存取数据。
- 安全性:支持数据加密存储,增强了安全性。
- 数据隔离:不同用户、不同小程序之间的数据互相隔离。
-
使用场景:
- 用户信息:如用户登录状态、用户设置、缓存的个性化内容等。
- 配置数据:如程序的一些初始化配置信息,简化用户的后续操作。
🔎4.其他缓存工具
除了 Storage
,小程序还提供了一个名为 CacheManager
的缓存工具,但该工具依赖 iOS 系统的原生实现,因此仅支持在 iOS 平台上使用。由于该工具的局限性,这里不再详细介绍。
- 点赞
- 收藏
- 关注作者
评论(0)