如何解决chrome.storage.sync问题?

时间:2014-10-15 10:00:51

标签: javascript google-chrome google-chrome-extension

我有一个simple Chrome extension,它使用chrome.storage API在列表中存储任务。每次更新任务列表时,数组都存储到chrome.storage.sync。

我有两台笔记本电脑设置了Chrome扩展程序。我已经同时登录了同一个Google帐户。

有时当我更新第一台笔记本电脑上的任务列表时,第二台笔记本电脑将在几秒钟内反映更新。但其他时候,第二台笔记本电脑很长时间都没有收到更新。它非常不一致 - 有时如果我退出Chrome并在第二台机器上重新启动它,更新后的列表就会出现。

我在任何一台笔记本电脑上都没有出现任何控制台错误,并且任务在第一台机器上正确保存 - 它们只是没有转移到第二台笔记本电脑。

chrome.storage.sync API有一些限制,我试图弄清楚我是否违反了其中一个。最有可能的是:

10 MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

"每分钟可以执行的最大设置,删除或清除操作次数,持续超过10分钟。将导致超出此限制的更新立即失败并设置runtime.lastError。"

我读到的方式是,只要连续10分钟内每分钟不超过10次操作(总共至少100次),就不会违反限制。如果我违反此限制,我会看到控制台错误或任务无法在本地保存。

一般情况下 - 有没有办法调试Chrome同步问题?它有望成为一个好消息吗?

1 个答案:

答案 0 :(得分:5)

依赖chrome.storage.sync存在问题,是的。

  1. 达到配额限制可能会将您的扩展程序列入内存黑名单,直到Chrome重新启动。

    理论上,你可以通过chrome.storage.set回调捕获配额错误,因为它会设置chrome.runtime.lastError,并实现某种退避/缓冲。

    在实践中,有anecdotal evidence Chrome(不是Google后端)黑名单的黑名单会破坏限制,并且这会在Chrome会话中持续存在(即使配额应该刷新)。截至2014-10-16,这是still not fixed

  2. 无法等待/请求同步。

    不幸的是,当前表单中的chrome.storage.sync不会提供远程同步完成的事件,也不会在本地状态没有变化时出错。因此,如果您在开始时依赖某些值,则can't reliably wait for it。而且,正如Chrome开发人员所指出的那样,这可能会保持这种状态。

  3. 没有暴露国家信息。

    实际上,忘记事件。如果启用了Chrome同步,则API甚至不会公开。如果这样做会解决很多问题,并暴露出最后一个已知的同步时间戳。它目前没有;这是feature request

  4. 尽管如此,chrome.storage.sync仍是一个有用的工具。但是,在使用它时,期望它不可靠,并始终注意速率限制;可能会实施自己的速率限制。

    实际回答您的问题

    对于调试chrome.storage.sync,您可以使用chrome://sync-internals页面查看。