You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome存储容量耗尽时的默认行为及FIFO自动清理策略咨询

Chrome Storage 容量耗尽相关问题解答

一、存储容量耗尽时的现象

当chrome.storage.local或chrome.storage.sync达到容量上限后,后续的写入操作会直接失败。调用set()方法时,回调函数会收到QUOTA_EXCEEDED_ERR类型的错误,提示存储配额不足。

二、填满容量后的默认行为

Chrome存储API本身没有内置自动清理机制,两种存储类型的默认行为一致:

  • 一旦达到容量上限,所有新的写入请求都会被拒绝,不会自动覆盖或删除已有数据
  • 已存储的数据会保持原样,不会被系统强制清理

不同存储类型的默认容量上限:

  • chrome.storage.local:默认5MB,可通过申请unlimitedStorage扩展权限突破限制
  • chrome.storage.sync:默认总容量100KB,单条数据最大8KB,且每日同步操作有频率限制

三、基于FIFO的自动清理实现策略

要实现先进先出的自动清理,需要手动维护存储条目的时序信息,核心思路是记录每个条目的创建时间,在容量不足时删除最早的条目。具体步骤如下:

  1. 为存储条目添加时间戳:每次写入数据时,额外记录该条目的创建时间戳
  2. 预检查容量:写入新数据前,调用chrome.storage.local.getBytesInUse()获取当前已用容量,判断是否会超过上限
  3. 执行FIFO清理:如果容量不足,将所有存储条目按时间戳从小到大排序,逐个删除最早的条目,直到腾出足够空间
  4. 写入新数据:清理完成后,再写入带时间戳的新条目

示例代码

async function setWithFIFOStorage(key, value) {
    // 定义默认容量上限(5MB)
    const MAX_CAPACITY = 5 * 1024 * 1024;
    // 序列化新数据,计算占用字节数
    const newItem = { value, timestamp: Date.now() };
    const newItemSize = new TextEncoder().encode(JSON.stringify({ [key]: newItem })).length;
    
    // 获取当前已用存储容量
    const usedCapacity = await chrome.storage.local.getBytesInUse();
    
    // 判断是否需要清理
    if (usedCapacity + newItemSize > MAX_CAPACITY) {
        // 获取所有存储条目
        const allItems = await chrome.storage.local.get(null);
        // 转换为数组并按时间戳升序排序(最早的在前)
        const sortedEntries = Object.entries(allItems).sort((a, b) => a[1].timestamp - b[1].timestamp);
        
        let freedSize = 0;
        // 循环删除最早条目,直到有足够空间
        while ((usedCapacity - freedSize + newItemSize) > MAX_CAPACITY && sortedEntries.length > 0) {
            const [oldKey, oldItem] = sortedEntries.shift();
            await chrome.storage.local.remove(oldKey);
            freedSize += new TextEncoder().encode(JSON.stringify({ [oldKey]: oldItem })).length;
        }
    }
    
    // 写入新条目
    await chrome.storage.local.set({ [key]: newItem });
}

注意事项

  • 对于chrome.storage.sync,清理时要注意同步频率限制,避免短时间内大量删除/写入导致同步失败
  • 若使用unlimitedStorage权限,虽无严格容量限制,但仍建议定期清理旧数据,避免占用过多本地磁盘空间

内容的提问来源于stack exchange,提问作者James Shapiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:22:28