多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 在APP开发过程中,缓存操作经常会用到,这里的操作函数分同步和异步两种方式,可根据实际情况选择 [TOC] ## uni.setStorage(OBJECT) > 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。 **OBJECT 参数说明** | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | | data | Any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 | | success | Function | 否 | 接口调用成功的回调函数 | | fail | Function | 否 | 接口调用失败的回调函数 | | complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | **示例** ~~~ uni.setStorage({ key: 'storage_key', data: 'hello', success: function () { console.log('success'); } }); ~~~ ## uni.setStorageSync(KEY,DATA) > 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。 **参数说明** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | | data | Any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 | ~~~ try { uni.setStorageSync('storage_key', 'hello'); } catch (e) { // error } ~~~ ## uni.getStorage(OBJECT) > 从本地缓存中异步获取指定 key 对应的内容。 **OBJECT 参数说明** | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | | success | Function | 是 | 接口调用的回调函数,res = {data: key对应的内容} | | fail | Function | 否 | 接口调用失败的回调函数 | | complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | **success 返回参数说明** | 参数 | 类型 | 说明 | | --- | --- | --- | | data | Any | key 对应的内容 | **示例** ~~~ uni.getStorage({ key: 'storage_key', success: function (res) { console.log(res.data); } }); ~~~ ## uni.getStorageSync(KEY) > 从本地缓存中同步获取指定 key 对应的内容。 **参数说明** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | **示例** ~~~ try { const value = uni.getStorageSync('storage_key'); if (value) { console.log(value); } } catch (e) { // error } ~~~ ## uni.getStorageInfo(OBJECT) > 异步获取当前 storage 的相关信息。 **平台差异说明** | App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | | --- | --- | --- | --- | --- | | HBuilderX 2.0.3+ | √ | √ | √ | √ | **OBJECT 参数说明** | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | success | Function | 是 | 接口调用的回调函数,详见返回参数说明 | | fail | Function | 否 | 接口调用失败的回调函数 | | complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | **success 返回参数说明** | 参数 | 类型 | 说明 | | --- | --- | --- | | keys | Array<String> | 当前 storage 中所有的 key | | currentSize | Number | 当前占用的空间大小, 单位:kb | | limitSize | Number | 限制的空间大小, 单位:kb | **示例** ~~~ uni.getStorageInfo({ success: function (res) { console.log(res.keys); console.log(res.currentSize); console.log(res.limitSize); } }); ~~~ ## uni.getStorageInfoSync() > 同步获取当前 storage 的相关信息。 **平台差异说明** | App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | | --- | --- | --- | --- | --- | | HBuilderX 2.0.3+ | √ | √ | √ | √ | **示例** ~~~ try { const res = uni.getStorageInfoSync(); console.log(res.keys); console.log(res.currentSize); console.log(res.limitSize); } catch (e) { // error } ~~~ ## uni.removeStorage(OBJECT) > 从本地缓存中异步移除指定 key。 **OBJECT 参数说明** | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | | success | Function | 是 | 接口调用的回调函数 | | fail | Function | 否 | 接口调用失败的回调函数 | | complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | **示例** ~~~ uni.removeStorage({ key: 'storage_key', success: function (res) { console.log('success'); } }); ~~~ ## uni.removeStorageSync(KEY) > 从本地缓存中同步移除指定 key。 **参数说明** | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | key | String | 是 | 本地缓存中的指定的 key | **示例** ~~~ try { uni.removeStorageSync('storage_key'); } catch (e) { // error } ~~~ ## uni.clearStorage() > 清理本地数据缓存。 **示例** ~~~ uni.clearStorage(); ~~~ ## uni.clearStorageSync() > 同步清理本地数据缓存。 **示例** ~~~ try { uni.clearStorageSync(); } catch (e) { // error } ~~~ ## 缓存操作在各端的具体实现区别 > * H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理 > * App端为原生的plus.storage,无大小限制,不是缓存,是持久化的 > * 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。 > * 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。 > * 支付宝小程序单条数据转换成字符串后,字符串长度最大200\*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。 > * 百度、字节跳动小程序文档未说明大小限制 除此之外,其他数据存储方案: > * H5端还支持websql、indexedDB、sessionStorage > * App端还支持[SQLite](https://www.html5plus.org/doc/zh_cn/sqlite.html)、[IO文件](https://www.html5plus.org/doc/zh_cn/io.html)等本地存储方案。 从HBuilderX2.6.6+起,App-Android平台对本地storage数据存储进行了性能优化,它的具体优化方式和升级注意事项,详见:https://ask.dcloud.net.cn/article/37071