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

Ben*_*rey 5 javascript google-chrome google-chrome-extension

我有一个简单的Chrome扩展程序,它使用chrome.storage API在列表中存储任务.每次更新任务列表时,阵列都存储到chrome.storage.sync.

我有两台笔记本电脑设置了Chrome扩展程序.我在两者上都登录了相同的Google帐户.

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

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

chrome.storage.sync API有一些限制,我想弄清楚,如果我违反其中之一.最有可能的是:

10 MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE
Run Code Online (Sandbox Code Playgroud)

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

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

通常 - 有没有办法调试Chrome同步问题?它有望成为一个好消息吗?

Xan*_*Xan 7

依赖是有问题chrome.storage.sync,是的.

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

    理论上,您可以使用chrome.storage.set回调捕获配额错误,因为它将设置chrome.runtime.lastError并实现某种退避/缓冲.

    在实践中,有传闻证据表明Chrome(不是谷歌后端)黑名单是一个突破限制的扩展名,并且这会在Chrome会话中持续存在(即使配额应该刷新).截至2014-10-16,这仍未修复.

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

    不幸的是,chrome.storage.sync在其当前形式中,不提供远程同步完成的事件或在本地状态没有变化的情况下出错.因此,如果您在启动时依赖某些值,则无法可靠地等待它.而且,正如Chrome开发人员所指出的那样,这可能会保持这种状态.

  3. 没有暴露国家信息.

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

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

要真正回答你的问题

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