【问题标题】:How to use chrome.storage along with a remotely hosted database for a chrome extension?如何将 chrome.storage 与远程托管数据库一起用于 chrome 扩展?
【发布时间】:2017-05-08 04:56:24
【问题描述】:

我正在开发一个 chrome 扩展,它必须存储其用户的数据。为此,我使用的是运行 mysql 数据库的托管服务器。但目前数据的任何添加或更改都会触发对托管服务器的请求。

Chrome 扩展提供chrome.storage.local API,适合存储最大 5mb 的数据。我想利用此存储 API 将其用作临时存储来减少对托管服务器的请求数量。

我打算使用chrome.storage.onChanged.addListener 和chrome.storage.local.getBytesInUse 来检查存储的数据是否超过某个阈值,然后只向远程服务器发出一个ajax 请求来保存数据。成功响应后,chrome.storage 中的旧数据将被清除。

但是有可能丢失一些在服务器请求/响应周期过程中创建的新数据。

如何防止数据丢失?对于减少从扩展对远程服务器的请求数量的优化问题,是否有任何替代解决方案?

谢谢。

【问题讨论】:

  • FWIW 您可以添加 "permissions": ["unlimitedStorage"] 以克服 5MB 限制。
  • @wOxxOm,我知道这一点,但我也为我们的扩展程序的用户提供了一个 Web 界面,用于显示他们保存的数据。为此,我必须将数据发送到托管服务器。所以,增加 5MB 的限制并不能完全解决我的问题。

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


【解决方案1】:

这并不是关于 chrome 扩展的问题。它更多的是关于离线工作和智能同步的持久数据库。这恰好是一个很难正确解决的问题。

最简单的解决方案是使用 chrome.storage.sync。这可以让您免费获得持久性,但需要注意的是存储空间有限。在尝试其他选项之前,您绝对应该看看这是否可行。

否则,我建议您在推出您自己的解决方案之前先查看第 3 方选项。您可能听说过渐进式网络应用程序,它可以离线工作,并在互联网可用时同步。

An article about the advantages of progressive web apps

Google Tutorial

PouchDB, a well regarded web database that works offline and syncs to other databases

看看那些。这将是非常值得的麻烦。否则你最终只会在尝试同步工作的黑客之上构建黑客。

...最后一件事...确保将远程数据库的 URL 添加到您的 manifest's permissions。

【讨论】:

  • 谢谢,这些链接很有帮助。我期待为我的问题使用持久性数据库。但我担心上述 Web 数据库中存储的数据量很大时的情况。这会影响用户端扩展程序或 chrome 浏览器的性能吗?
  • 这取决于你如何构建它。有太多因素无法给你一个更好的答案。
猜你喜欢
  • 2018-05-04
  • 1970-01-01
  • 2021-09-20
  • 2013-06-13
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
相关资源
最近更新 更多