B站收藏夹整理工具
进阶主题

存储机制

Chrome Storage / IndexedDB / localStorage 分别存什么、何时使用

扩展的数据全部落在 你的浏览器本地,按照数据特性分布在三种存储介质中。本页给出每一类数据的精确落点。

三种存储介质总览

介质读写 API容量上限生命周期典型用途
Chrome Extension Storagechrome.storage.local约 10MB(浏览器实现差异)卸载扩展时清除AI 配置等全局键值对
IndexedDBindexedDB远大于 localStorage(通常 > 50MB)卸载扩展不一定立即清除收藏夹视频详情缓存
localStoragewindow.localStorage约 5MB扩展上下文下与扩展绑定快速命中的视频列表缓存

存储分布详表

1. Chrome Extension Storage(扩展全局配置)

保存扩展的稳定配置项,由 zustand global-data store 序列化写入:

含义
aiConfig.configModecustom / free
aiConfig.adapteropenai / qianwen / kimi / gml / custom / aigate / spark
aiConfig.keyAPI Key(custom 模式)
aiConfig.baseUrlBase URL(可选,未填使用适配器默认值)
aiConfig.model模型名称
aiConfig.extraParams拼入请求 body 的额外参数(JSON 字符串)
defaultFavoriteId默认收藏夹 ID
关键字规则所有收藏夹的关键字列表

Chrome Storage 会随 Chrome Sync(若已启用)同步到其他登录了相同账号的设备。若你不希望 API Key 被同步,请关闭 Chrome 账号同步,或使用「免费额度」模式避开 Key。

2. IndexedDB(收藏夹视频详情一级缓存)

src/utils/indexed-db.ts 封装的 dbManager 负责读写。主要键:

含义默认过期时间
favorite-all-<mediaId>单个收藏夹的全部视频元信息(由 fetchAllFavoriteMedias 写入)10 分钟

每条记录除了业务数据外还会携带写入时间戳,由 dbManager.isExpired 在读取时判断是否已过期。

3. localStorage(收藏夹视频列表二级缓存)

useFavoriteListData 维护,用于 UI 层快速命中

键前缀含义过期时间
fav-list-cache:<mediaId>单个收藏夹的视频列表快照 + timestamp20 分钟

相关行为:

  • 读取时若命中且未过期 → 直接返回,不触网;
  • 读取时未命中 → 调用 fetchAllFavoriteMedias(会再走 IndexedDB 缓存),完成后把最新结果写回 localStorage;
  • 同一个 mediaId 的并发读取请求 共享同一个 Promise,避免重复网络调用。

此外,批量移动 完成后(通过关键字 / AI / 拖拽),扩展会 同步 更新 localStorage 缓存 —— 把源收藏夹里被移走的视频从缓存中剔除,追加到目标收藏夹缓存(仅当目标缓存已存在时)。这就是"移动完立刻看得到变化"的原因。

清理优先级

当你想复位到"干净状态"时,按 从小到大 的影响面依次操作:

  1. 仅清 localStorage:删除所有 fav-list-cache:* 条目 → 下次打开收藏夹会重新拉取;
  2. 清 IndexedDB:删除扩展 IndexedDB 数据库 → 会强制触发 B 站接口请求;
  3. 清 Chrome Storage:清除 AI 配置 / 关键字规则等,损失较大,慎用
  4. 卸载并重装扩展:上述全部会被重置。

详细操作步骤见 诊断信息收集指南 中的「本地存储快速重置」。

相关文档

On this page