选择合适的存储区域
| 存储区域 | 在何时使用 | 备注 |
|---|---|---|
storage.local | 单设备上的持久扩展状态 | 大多数扩展数据的最佳默认值 |
storage.sync | 在已登录浏览器之间同步的小型用户偏好 | 受配额限制,速度比 local 慢 |
storage.session | 短暂的会话状态 | 适合短暂的运行时协调 |
storage.managed | 企业管理的策略值 | 由 schema 驱动,对扩展只读 |
推荐的默认设置
- 用
storage.local存放功能状态、缓存以及持久设置。 - 仅在小型、用户层面有意义的偏好上使用
storage.sync。 - 用
storage.session存放不应在完整浏览器重启后保留的状态。 - 把
storage.managed当作一条独立的企业路径,而不是通用设置机制。
对 service worker 友好的模式
Manifest V3(MV3)的后台 service worker 可能在事件之间停止并重新启动,所以不要仅依赖内存状态。- 按需从存储中恢复关键状态。
- 把内存缓存当作一种优化,而非依赖。
- 保持启动开销小,让事件处理保持响应。
- 持久化带版本的设置变更,而不是假设 background 脚本始终运行。
设置模块示例
存储设计清单
- 决定哪些值必须在浏览器重启后仍然存在。
- 决定(如果有)哪些值应在设备间同步。
- 在首次发布前为存储的数据结构定义版本。
- 为被重命名的键或结构变更准备迁移路径。
- 不要在客户端可读的扩展存储中保存密钥,除非你完全接受任何扩展代码都能读取它们。
Managed 存储
如果你使用storage.managed,请把运行时代码与 manifest.json 中合法的 storage.managed_schema 文件搭配使用。Extension.js 会校验并把该 schema 文件输出到对应路径。
关于 JSON 资源的详情,参见 JSON。
常见错误
- 把
storage.sync用于大型数据集或缓存。 - 在 MV3 中假设 background 内存变量是持久的。
- 在没有版本化策略的情况下存储多个互不关联的键。
- 把企业管理的存储与用户可编辑的设置混在一起,而不区分它们的访问模式。
下一步
- 在 manifest.json 中声明由 schema 支撑的企业存储。
- 在 JSON 中回顾资源处理。
- 用 消息通信 在上下文之间移动状态。

