deleteLowPriorityCache method

Future<void> deleteLowPriorityCache(
  1. int remainingSizeBytes,
  2. int maxSizeBytes
)

根据优先级排序删除低优先级缓存

Implementation

Future<void> deleteLowPriorityCache(
  int remainingSizeBytes,
  int maxSizeBytes,
) async {
  final items = await getAllCacheItems();

  // 按优先级排序
  items.sort((a, b) => a.priority.compareTo(b.priority));

  // 计算需要释放的空间
  final needFreeBytes = remainingSizeBytes - maxSizeBytes;
  if (needFreeBytes <= 0) return;

  int freedBytes = 0;
  final keysToDelete = <String>[];

  // 收集需要删除的键
  for (final item in items) {
    if (freedBytes >= needFreeBytes) break;
    keysToDelete.add(item.key);
    freedBytes += item.size;
  }

  // 批量删除(使用循环逐个删除)
  if (keysToDelete.isNotEmpty) {
    for (final key in keysToDelete) {
      await (delete(cacheItems)..where((c) => c.key.equals(key))).go();
    }
  }
}