Browser Extensions Development (Chrome & Edge) · 课时

同步存储与本地存储及配额

选择合适的 Chrome 存储区域,理解配额限制,并可靠地处理存储变化事件。

第 4 / 4 课13 个步骤

同步存储与本地存储及配额 是 CoddyKit 上的免费 Browser Extensions Development (Chrome & Edge) 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Browser Extensions Development (Chrome & Edge) 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Browser Extensions Development (Chrome & Edge) 课程共包含 4 节课。

两个主要的存储区域

Chrome 存储接口提供了多个区域。您最常使用的两个区域是 storage.local 和 storage.sync。

  • local — 保存在此设备上,配额较大
  • sync — 在用户已登录的各个浏览器之间同步,配额较小

何时使用 sync

对于希望用户在所有设备上都能使用的偏好设置(例如主题或设置),请使用 storage.sync。请保持数据量较小。

chrome.storage.sync.set({ theme: 'dark', fontSize: 14 })

何时使用 local

对于较大的数据或特定设备上的数据(例如缓存、日志或无需同步的下载内容),请使用 storage.local。

chrome.storage.local.set({ cache: bigObject })

同步配额限制

storage.sync 的容量有意设置得较小。大致来说:总容量约为 100 KB,每项约为 8 KB,并且每分钟可写入的次数有限。

超出这些限制会引发错误,因此请合理规划数据结构。

// Stay well under ~8 KB per key for sync

本地配额限制

storage.local 允许存储更多数据,默认通常约为 10 MB,而 unlimitedStorage 权限可以提高这一上限。不过,仍应避免存储巨大的数据块。

{
  "permissions": ["storage", "unlimitedStorage"]
}

读回数据

两个区域都使用 get 读取数据。您可以传入一个键、一个键数组或一个默认值对象。

const data = await chrome.storage.sync.get({ theme: 'light' })
console.log(data.theme)

监听变化

每当存储的值发生变化时,onChanged 事件都会触发,即使变化来自其他上下文。请使用它让用户界面保持同步。

chrome.storage.onChanged.addListener((changes, area) => {
  if (area === 'sync' && changes.theme) {
    console.log('New theme: ' + changes.theme.newValue)
  }
})

移除和清空

使用 remove 删除指定的键,或使用 clear 清空整个区域。

chrome.storage.local.remove('cache')
chrome.storage.sync.clear()

检查已使用的字节数

在写入更多数据之前,使用 getBytesInUse 查看距离配额上限还有多远。

const used = await chrome.storage.sync.getBytesInUse()
console.log(used + ' bytes used')

处理写入失败

同步写入可能因配额错误而失败。请将写入操作放在 try/catch 中,并在同步存储已满时回退到本地存储。

try {
  await chrome.storage.sync.set({ big: value })
} catch (e) {
  await chrome.storage.local.set({ big: value })
}

明智地选择

一种常见做法是:将小型设置保存在 sync 中,将其他所有内容保存在 local 中。切勿将令牌等机密信息以明文存储,因为扩展程序存储并未加密。

快速检查

测试您对存储的理解。

回顾

您已经比较了不同的存储区域:

  • 使用 sync 保存跨设备的小型设置
  • 使用 local 保存较大的设备数据
  • 遵守配额限制并检查 getBytesInUse
  • 响应 onChanged
  • 处理写入失败,并避免存储机密信息

选择合适的区域可以让您的数据保持快速、持久,并处于限制范围内。

免费开始

用 AI 导师学习 JavaScript — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
12
课程
48

常见问题解答

「同步存储与本地存储及配额」课时是免费的吗?

是的 — 「同步存储与本地存储及配额」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Browser Extensions Development (Chrome & Edge) 课程的其余内容,请升级到 CoddyKit PRO。 Browser Extensions Development (Chrome & Edge) 课程共包含 4 节课。

「同步存储与本地存储及配额」这节课中我会学到什么?

选择合适的 Chrome 存储区域,理解配额限制,并可靠地处理存储变化事件。 你通过在浏览器中直接运行的动手代码来练习 Browser Extensions Development (Chrome & Edge),全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Browser Extensions Development (Chrome & Edge) 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Browser Extensions Development (Chrome & Edge) 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「同步存储与本地存储及配额」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Browser Extensions Development (Chrome & Edge) 课中编写并运行代码吗?

能。每节 Browser Extensions Development (Chrome & Edge) 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 单向消息传递模式
  2. 组件之间的双向消息传递
  3. 使用 Chrome Storage API
  4. 同步存储与本地存储及配额
← 返回 Browser Extensions Development (Chrome & Edge)