【愚公系列】《微信小程序与云开发从入门到实践》040-小程序缓存工具

举报
愚公搬代码 发表于 2024/12/29 11:48:38 2024/12/29
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。博客内容.NET、...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

在移动应用的开发中,性能与用户体验始终是重中之重。对于小程序来说,如何有效管理数据的存储与访问,直接影响到应用的响应速度和流畅度。小程序缓存工具应运而生,它为开发者提供了一种高效的方式来存储和管理用户数据,从而提升小程序的性能。

在本篇文章中,我们将深入探讨小程序缓存工具的基本概念和应用场景。我们将介绍常用的缓存策略,包括本地缓存的使用、数据的读取与更新、以及缓存失效的处理方式。同时,我们还会分享一些最佳实践,帮助开发者在实际项目中合理利用缓存工具,优化小程序的性能与用户体验。

🚀一、小程序缓存工具

🔎1.小程序的缓存存储:Storage

在小程序开发中,Storage 提供了便捷的缓存存储功能,适用于存储较为简单和结构化的数据(例如用户登录状态、用户信息等)。与文件存储不同,Storage 具有较低的开发成本,并且提供了多种简便的存取方式。

Storage 的特点

  1. 存储空间限制

    • 每个微信用户在同一小程序中的 Storage 空间上限为 10MB。
    • 同一小程序中的不同用户数据互相隔离,不能共享数据。
    • 同一程序中,不同用户的数据也不可互相访问。
  2. 存储数据的场景

    • 适用于需要存储简单的用户数据,如用户的登录状态、用户基本信息等。
    • 数据存储在 Storage 中,除非用户手动删除或系统清理,否则会长期有效。
  3. 数据存储与取回

    • 小程序提供了异步和同步两种存取方式,使用起来非常方便。
    • 存储数据时,Storage 支持多种原生数据类型,如 StringDate 等,也可以将 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 平台上使用。由于该工具的局限性,这里不再详细介绍。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。