全行业小程序/公众号定制开发 · 当天出DEMO · 不满意随时退 · 24小时接单
获取报价
小程序本地存储与缓存策略教程,骑手在街边等待页面加载 MPForge

小程序本地存储与缓存策略教程|容量、清理与同步口径 – MPForge

直接回答:小程序本地存储不是数据库,它有容量上限、可能被用户清空,规则只有三条:分清缓存与必需本地态、给数据设过期与清理时机、敏感信息不落明文。这份教程面向商家与开发:存储规范怎么立、超限白屏怎么防、登录态切换怎么清。MPForge(DEVDIY 旗下)的项目统一走这套存储规范,超限与脏数据类客诉基本归零。

2 类数据可丢的缓存与不可丢的本地态,分开学
10MB 级单个小程序存储上限的量级,别当无限仓库用
1 个封装统一前缀加过期字段,所有读写走同一入口
3 个清理点登录态变更、版本升级、超限告警时清

一、本地存储的定位:快,但不可靠

先把定位摆正:本地存储是加速器,不是记账本——权威数据永远在服务端。

商品详情、配置项、城市列表这类读多写少的数据,缓存到本地能让二次进入快出一大截;但订单金额、库存、优惠券余额这类资金相关数据,一旦本地说了算,就会出现「用户看到的价格和实际扣的不一样」。所以规范第一条:能服务端权威的不要本地权威,本地只存展示用的快照,进关键流程前回服务端校验。

还要预期「存储会消失」:用户可以在系统或小程序里清缓存,换设备更是全丢。凡是清掉后业务要断的本地态(比如待提交的表单草稿),都要有服务端兜底或重新拉取的链路。

二、四份材料:字段清单、过期策略、清理时机、同步点

开发动手前把这四样立成规范,后面所有存储改动照此执行:

材料 要写到什么程度 缺了会发生什么
存储字段清单 每个 key 存什么、多大、谁在用,逐项登记 没人知道存了什么,垃圾数据越积越多
过期策略 每类数据带时间戳与有效期,过期即重拉 缓存永久新鲜,用户看到昨天的价格
清理时机 登录态变更、退出登录、超限告警时触发清理 A 用户的登录态串到 B 用户头上
服务端同步点 本地态与服务的同步节点写清,冲突以服务端为准 草稿、购物车各端各一份,互相覆盖

隐私字段的落盘口径要与 隐私指引填写教程 保持一致;提审前对照 小程序安全检测要点 把本地存储敏感项再过一遍。

三、五步立好存储规范

按这个顺序做,存储从第一天起就可控:

  1. 区分缓存与必需本地态:把数据分两栏——丢了无所谓只影响速度的(缓存),丢了影响业务正确性的(本地态),两栏用不同前缀管理;
  2. 做统一封装:所有 set/get 走同一个封装层,key 自动加业务前缀,写入时附带过期时间戳,禁止业务代码直接裸调底层接口;
  3. 登录态变更时清理:登录、登出、切换账号三个节点清掉用户维度数据,防止上一任用户的购物车与偏好留给下一任;
  4. 监控 setStorage 失败:容量超限写入会失败,封装层把失败上报,超限即触发按「最久未用优先」的清理,不让白屏上线;
  5. 隐私字段不落明文:token、手机号、身份信息要么不落盘,要么加密后落盘,日志输出时打掩码。

四、读写口径:Sync、Async 与超限处理

同一套接口的两种写法,用错了直接拖慢启动:

口径 达标做法 常见错误
同步/异步 关键渲染路径用异步读,避免 Sync 阻塞 启动时 Sync 读大对象,首屏卡半秒
写入失败 失败上报并触发清理重试,不静默吞掉 超限后数据没存上,页面读出空值白屏
大对象 列表分页缓存,只存当前需要的分片 一次塞全量数据,存储涨得快清得慢
版本兼容 数据结构变更时带版本号,旧结构自动失效 升级后读旧结构解析报错

五、避坑清单

三类事故在实际项目里反复出现,上线前逐条自查:

  • token 明文乱存:登录凭证落盘要么加密要么干脆只留内存加定时刷新,明文进 storage 等于把门钥匙贴在门上;
  • 日志无限追加进 storage:把行为日志全量写本地,涨到超限才暴雷,日志要么限量滚动要么直接上报服务端;
  • 超限不处理:写入失败被静默吞掉,用户侧表现为莫名白屏,监控与清理兜底必须封装进统一层;
  • 缓存当权威:价格、库存、余额这类数据以服务端为准,本地快照过期就重拉,不为省一次请求冒资金风险。

六、常见问题 FAQ

同步和异步接口怎么选?

异步为主。同步接口在大数据量时会阻塞渲染线程,启动路径和列表页尤其明显;只有在极小的键值读取、且时序确实必须同步的场景才用 Sync 版本。

本地存储和 CDN 缓存是一回事吗?

不是。本地存储缓存在用户设备里,管的是小程序自己的数据读写;CDN 缓存在网络层,管的是图片和静态资源的分发速度,两者各管一段不互相替代。

用户清了缓存,数据怎么办?

设计时就要假设缓存随时会消失:页面读不到缓存就重新拉服务端,本地态有服务端兜底的走兜底恢复,绝不允许「缓存没了页面就废」的链路存在。

这个和 GEO 地理位置配置有关系吗?

没有关系。GEO 指小程序的地理位置配置——门店地址、经纬度、服务类目,影响「附近」检索展示,不是按城市做地域 SEO;本地存储管的是设备端数据,两者互不相干。

多用户共用一台设备,怎么避免数据串号?

用户维度的 key 带上账号标识,登录态变更时整批清理;敏感的本地态干脆不落盘,每次登录后从服务端拉取。串号问题的根子几乎都在「清理时机没做」。

想把存储规范一次立到位?

MPForge(DEVDIY 旗下)按业务数据清单帮你定存储分层、过期与清理策略,统一封装带上超限告警,商家不用再收「页面白屏」的客诉。

获取报价 看小程序安全检测要点