uniapp 如何获取缓存大小及清理方法

在uniapp开发中,如何获取当前应用占用的缓存大小?是否有官方API可以直接查询?另外,如果需要清理这些缓存数据,具体应该怎么操作?求分享详细的代码实现方法或示例!

2 回复

获取缓存大小:使用 uni.getStorageInfoSync() 或异步方法获取 storage 信息,其中 currentSize 为当前大小。

清理缓存:调用 uni.clearStorageSync() 或异步方法清空本地缓存。注意:会删除所有 storage 数据,请谨慎操作。


在 UniApp 中,缓存大小获取和清理可通过以下方法实现,主要依赖 uni 提供的 API。

获取缓存大小

使用 uni.getStorageInfo 方法获取缓存信息,包括总大小(单位:字节)和键列表。

uni.getStorageInfo({
  success: (res) => {
    console.log('缓存大小:', res.currentSize + ' KB'); // currentSize 单位为 KB
    console.log('缓存键列表:', res.keys);
  },
  fail: (err) => {
    console.error('获取缓存信息失败:', err);
  }
});
  • currentSize 表示当前缓存占用的总大小(单位:KB)。
  • keys 返回所有缓存键的数组。

清理缓存方法

  1. 清理指定缓存:使用 uni.removeStorage 删除单个键。

    uni.removeStorage({
      key: 'your_key', // 替换为具体缓存键
      success: () => {
        console.log('指定缓存清理成功');
      }
    });
    
  2. 清理全部缓存:使用 uni.clearStorage 清除所有缓存。

    uni.clearStorage({
      success: () => {
        console.log('所有缓存清理完成');
      }
    });
    

完整示例

结合获取和清理功能:

// 获取并清理缓存
function handleCache() {
  uni.getStorageInfo({
    success: (res) => {
      const cacheSize = res.currentSize;
      console.log('当前缓存大小:', cacheSize + ' KB');
      
      if (cacheSize > 1024) { // 示例:超过 1MB 时清理
        uni.clearStorage({
          success: () => {
            uni.showToast({ title: '缓存已清理' });
          }
        });
      }
    }
  });
}

注意事项

  • 缓存操作是异步的,需在回调中处理结果。
  • 清理全部缓存会移除所有通过 uni.setStorage 存储的数据,请谨慎使用。
  • 实际大小单位以 API 返回为准(currentSize 为 KB)。

通过以上方法,可有效管理 UniApp 缓存。

回到顶部