uniapp 清理缓存

471 阅读1分钟
/**
 * 清理缓存的函数,根据不同的操作系统执行不同的缓存清理逻辑
 */
const clearCache = () => {
    // 获取当前操作系统的名称
    let os = plus.os.name;
    // 判断当前操作系统是否为 Android
    if (os == 'Android') {
        // 获取 Android 运行时的主 Activity
        let main = plus.android.runtimeMainActivity();
        // 获取主 Activity 的缓存目录
        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) { 
                        // 重新计算缓存大小
                        getCacheSize(); 
                    }, function(e) {
                        // 打印删除文件夹失败的错误信息
                        console.log(e.message)
                    });
                } else {
                    // 如果是文件,直接删除该文件
                    entry.remove();
                }
            }, function(e) {
                // 打印文件路径读取失败的信息
                console.log('文件路径读取失败')
            });
        }
        // 显示缓存清理完成的提示信息
        uni.showToast({
            title: '缓存清理完成',
            duration: 2000
        });

    } else { // iOS  
        // 清理 iOS 系统的缓存
        plus.cache.clear(function() {
            // 显示缓存清理完成的提示信息
            uni.showToast({
                title: '缓存清理完成',
                duration: 2000
            });
            // 重新计算缓存大小
            getCacheSize();
        });
    }
}

/**
 * 计算并显示当前缓存大小的函数
 */
function getCacheSize () {
    // 调用 plus.cache.calculate 方法计算缓存大小
    plus.cache.calculate(size => {
        // 如果缓存大小小于 1024 字节,以字节为单位显示
        if (size < 1024) {
            cacheSize.value = size + 'B';
        } 
        // 如果缓存大小大于等于 1KB 且小于 1MB,以 KB 为单位显示,保留两位小数
        else if (size / 1024 >= 1 && size / 1024 / 1024 < 1) {
            cacheSize.value = Math.floor((size / 1024) * 100) / 100 + 'KB';
        } 
        // 如果缓存大小大于等于 1MB,以 MB 为单位显示,保留两位小数
        else if (size / 1024 / 1024 >= 1) {
            cacheSize.value = Math.floor((size / 1024 / 1024) * 100) / 100 + 'M';
        }
        // 打印当前计算得到的缓存大小
        console.log('------------size', cacheSize.value)
    });
}