uniApp获取应用的缓存

本文介绍了如何在APP中管理缓存。首先展示了`checkCache()`函数,用于获取应用的缓存大小,并根据字节数转化为合适的单位(B, KB或MB)。然后,详细阐述了`clearStorage()`方法,用于清除应用的全部缓存数据,并在清除后调用`checkCache()`检查清理效果。这些功能对于优化应用性能和节省存储空间至关重要。

1.获取应用缓存

checkCache() {
	// 使用plus.cache.calculate 获取应用的缓存大小
	var self = this;
	// #ifdef APP-PLUS
	plus.cache.calculate(function(size) { //size是多少个字节单位是b
		if (size < 1024) {
			self.cacheSize = size + 'B';
		} else if (size / 1024 >= 1 && size / 1024 / 1024 < 1) {
			self.cacheSize = Math.floor(size / 1024 * 100) / 100 + 'KB';
		} else if (size / 1024 / 1024 >= 1) {
			self.cacheSize = Math.floor(size / 1024 / 1024 * 100) / 100 + 'M';
		}
	});
	// #endif
}

2.清除应用缓存

clearStorage() {
	var self = this;
	//使用plus.cache.clear 清除应用中的缓存数据
	// #ifdef APP-PLUS
	plus.cache.clear(function() {});
	// #endif
	this.checkCache();
}
Uniapp中清除应用缓存有多种方法,具体如下: ### 跨平台清除本地存储缓存 可以使用`uni.clearStorageSync()`方法清除所有本地存储的缓存,适用于退出登录等场景。示例代码如下: ```javascript uni.clearStorageSync(); uni.showModal({ title: "提示", content: "确定要退出登录吗?", success: (res) => { if (res.confirm) { uni.showToast({ title: res.Message, icon: "none" }); uni.clearStorageSync(); uni.reLaunch({ url: "/pages/wechatAuthorization/wechatAuthorization" }); } } }); ``` 该方法直接同步清除本地存储的所有数据,使用较为简单,但仅针对本地存储的数据缓存 [^2]。 ### 清除应用缓存(区分Android和iOS) 根据不同的操作系统(Android和iOS)进行不同的清除操作,代码如下: ```javascript // 清除缓存 function clearCache() { let that = this; let os = plus.os.name; if (os == 'Android') { let main = plus.android.runtimeMainActivity(); let sdRoot = main.getCacheDir(); let files = plus.android.invoke(sdRoot, "listFiles"); let len = files.length; for (let i = 0; i < len; i++) { let filePath = '' + files[i]; // 没有找到合适的方法获取路径,这样写可以转成文件路径 plus.io.resolveLocalFileSystemURL(filePath, function (entry) { if (entry.isDirectory) { entry.removeRecursively(function (entry) { // 递归删除其下的所有文件及子目录 that.getAppInfo(); // 重新计算缓存 }, function (e) { console.log(e.message); }); } else { entry.remove(); } }, function (e) { console.log('文件路径读取失败'); }); } uni.showToast({ title: '缓存清理完成', duration: 2000 }); } else { // ios plus.cache.clear(function () { uni.showToast({ title: '缓存清理完成', duration: 2000 }); that.getAppInfo(); }); } } ``` 此方法在Android系统下,通过获取应用主Activity实例对象,遍历缓存目录下的所有文件和文件夹,递归删除其下的所有文件及子目录;在iOS系统下,直接调用`plus.cache.clear()`方法清除缓存 [^1]。 ### 另一种区分Android和iOS清除缓存的实现 ```javascript function iosx() { console.log('11111'); let that = this; let os = plus.os.name; if (os == 'Android') { let main = plus.android.runtimeMainActivity(); let sdRoot = main.getCacheDir(); let files = plus.android.invoke(sdRoot, "listFiles"); let len = files.length; for (let i = 0; i < len; i++) { let filePath = '' + files[i]; // 没有找到合适的方法获取路径,这样写可以转成文件路径 plus.io.resolveLocalFileSystemURL(filePath, function (entry) { if (entry.isDirectory) { entry.removeRecursively(function (entry) { // 递归删除其下的所有文件及子目录 uni.showToast({ title: '缓存清理完成', duration: 2000 }); that.formatSize(); // 重新计算缓存 }, function (e) { console.log(e.message); }); } else { entry.remove(); } }, function (e) { console.log('文件路径读取失败'); }); } } else { // ios plus.cache.clear(function () { uni.showToast({ title: '缓存清理完成', duration: 2000 }); that.formatSize(); }); } } ``` 与上一种方法类似,也是根据不同操作系统进行不同的缓存清除操作,只是在清除完成后调用了不同的方法来更新缓存信息 [^3]。 ### 简单的清除应用缓存方式 ```javascript function clearCache() { plus.cache.clear(() => { uni.showToast({ title: '清除成功!', icon: 'none', success: () => { this.cache_size = '0.00MB'; } }); }); } ``` 该方法直接调用`plus.cache.clear()`清除应用缓存,并在清除完成后给出提示 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值