微信小程序,数据缓存,单个 key 允许存储的最大数据长度为 1MB 存的数据大于1M处理方法

本文介绍了在Uni-app中使用uni.setStorageSync进行本地缓存数据存储的方法,包括单个键最大1MB限制的处理策略,以及如何通过数据分块和全局变量应对大数据量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、uni.setStorageSync

将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

不大于1M时这样写就可以,下面附代码:

uni.setStorageSync('storage_key', 'hello'); //存入缓存
uni.getStorageSync('storage_key'); //从缓存取出

单个 key 允许存储的最大数据长度为 1MB,如果超出则存不进去,所以我们可以这样解决,思路,将数据拆分,然后分别存储,当用数据时再进行合并,下面附代码:

1.将数据分块存入缓存中

// 假设数据对象数组
var dataArray = [
    { name: '334', age: 99 },
    { name: '334', age: 99 },
    // 更多数据对象...
    // 总共 1050 条数据
];

// 定义分割块的大小
var blockSize = 500; // 每个块存储500条数据对象

// 计算分割后的块数
var numBlocks = Math.ceil(dataArray.length / blockSize);

// 存储分割后的数据块
for (var i = 0; i < numBlocks; i++) {
    // 计算当前块的起始位置和结束位置
    var start = i * blockSize;
    var end = Math.min(start + blockSize, dataArray.length);

    // 获取当前块的数据
    var blockData = dataArray.slice(start, end);

    // 存储当前块的数据,使用不同的 key 进行存储
    uni.setStorageSync("block_" + i, blockData);
}

// 存储数据块的数量,以便在其他页面读取时使用
uni.setStorageSync("numBlocks", numBlocks);
注意:因为可能时再其他页面使用所以一定要存储被拆分数据块的数量

下面时再其他页面应用

// 读取数据时,根据需要合并数据块
var mergedDataArray = [];
var numBlocks = uni.getStorageSync("numBlocks");
for (var i = 0; i < numBlocks; i++) {
    // 读取当前块的数据
    var blockData = uni.getStorageSync("block_" + i);
    // 合并数据块
    mergedDataArray = mergedDataArray.concat(blockData);
}

// mergedDataArray 现在包含了完整的数据对象数组

注意如果数据要是可能大于10M,可以用全局变量globalData

//App.js
globalData: {
	title:'',
},
//B页面:需要存储的地方这样写
getApp().globalData.title = '你要存入的数据'
//如果要是需要读取的地方
console.log(getApp().globalData.title)//直接读取即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值