开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
跳转
多媒体
缓存
预拉取
文件
位置
网络
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 缓存 > my.setstorage
评论 (1)
收藏
我的文档
设置

my.setstorage(object object)

小程序开发者工具: 支持。

主体: 企业支付宝小程序个人支付宝小程序

保存数据到本地缓存。

该 key 原来对应的内容会被覆盖。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 200kb,所有数据存储上限为 10mb。


相关接口

  • 本地缓存数据使用 my.setstorage 按 key 存储,使用 my.getstorage 按 key 读取;
  • 可使用 my.getstorageinfo 获取已存储的所有 key 以及总体空间占用情况;
  • 可使用 my.removestorage 删除指定 key 对应数据,使用 my.clearstorage 删除所有缓存数据;
  • 本地缓存数据相关的 api 均提供带 sync 后缀的同步版本,但通常推荐使用异步版本,以免影响页面加载和交互响应速度。

数据隔离

  • 本地缓存数据按支付宝账号和小程序 appid 两个维度隔离:同一设备上,不同账号的数据互相隔离,同一账号在不同小程序里的数据互相隔离;
  • web-view 组件内页面用 my.setstorage/my.getstorage 存取的数据与包含它的小程序隔离;
  • 插件本地缓存数据与宿主小程序隔离。

数据清除

  • 用户卸载支付宝客户端,所有小程序本地缓存数据会被一并清除;
  • 用户在我“我的小程序”中删除小程序,被删除小程序的本地缓存数据会被清除;
  • 不会清除数据的情况:退出小程序或支付宝、在支付宝的设置界面清除缓存、覆盖安装(不是先删除再安装)支付宝。

object object

查看示例

属性 类型 默认值 必填 描述
data unknown -

存储的数据。data 可以是任意类型

key string -

存储的 key,不接受空字符串

success function -

调用成功的回调函数

fail function -

调用失败的回调函数

complete function -

调用结束的回调函数(调用成功、失败都会执行)

data 参数说明

  • 单个 key 允许存储的最大数据大小为 200kb
  • 所有数据存储上限为 10mb。

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
2 必填参数为空。

请确保入参 key 或 data 类型正确且不为空。

12 存储总大小达到上限。

单个小程序数据存储上限为 10mb。可以通过 my.removestorage 及时移除不再需要的数据。

14 data长度超限

单个 key 允许存储的最大数据大小为 200kb,可以减少 data 长度或拆分成多个 key 进行存储

my.setstorage js 代码
my.setstorage({
  key: 'currentcity',
  data: {
    cityname: '杭州',
    adcode: '330100',
    spell: 'hangzhou',
  },
  success: (res) => {
    my.alert({ title: "setstorage success" });
  },
  fail: (error) => {
    console.error('setstorage failed: ', json.stringify(error));
  },
});

q:支付宝小程序里 my.setstorage 是否支持 encrypt 入参?

a:

支付宝小程序的本地缓存数据默认加密存储,不支持/不需要 encrypt 参数。

q:小程序数据到达 10mb 后继续写入数据会怎样?

a:

超过 10mb 后无法继续写入,会触发 fail 回调(错误码 12)。建议通过 my.removestorage 及时移除不再需要的数据。

q:小程序的 my.setstorage 和 h5 本地存储 localstorage 有何差异?

a:

h5 的 localstorage 只能存储 string,小程的 my.setstorage 支持 string,也支持 object(内部会自动做 json 序列化)。

q:web-view 组件里 h5 是否可以调用 my.setstorage?

a:

在 web-view 组件里 h5 引入 https://appx/web-view.min.js 后,可以调用 my.setstorage/my.getstorage,但请注意,它们操作的是 web-view 内的数据,与小程序数据并不相通。web-view 里想要利用小程序的数据,必须通过 my.postmessage/my.onmessage 与小程序通信。

内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图