deleteLowPriorityCache method
根据优先级排序删除低优先级缓存
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();
}
}
}