0

我正在研究一个需要存储用户数据的扩展。为此,我使用运行mysql数据库的托管服务器。但是目前数据的添加或更改都会向托管服务器发出请求。如何将chrome.storage与远程托管的数据库一起用于Chrome扩展?

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

我打算使用chrome.storage.onChanged.addListenerchrome.storage.local.getBytesInUse检查,如果存储的数据超过某一阈值,然后只触发一个Ajax请求到远程服务器来保存数据。成功响应后,chrome.storage中的旧数据将被刷新。

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

如何防止数据丢失?有没有其他解决方案来减少这个扩展对远程服务器的请求数量的优化问题?

谢谢。

+1

FWIW您可以添加''权限':[“unlimitedStorage”]'来克服5MB的限制。 – wOxxOm

+0

@wOxxOm,我意识到这一点,但我也为我们的扩展用户显示了他们保存的数据的Web界面。为此,我必须将数据发送到托管服务器。所以,增加5MB的限制并不能完全解决我的问题。 –

回答

0

这不是一个关于chrome扩展的问题。它更多的是关于持久数据库脱机工作和智能同步。这恰好是一个非常困难的问题。

最简单的解决方案是使用chrome.storage.sync。这会让您在有限的存储空间中免费获得持久性。在尝试其他选项之前,您一定要确定这是否可行。

否则,我建议在滚动您自己的解决方案之前查看第三方选项。您可能听说过脱机工作的渐进式网络应用程序,并在互联网可用时进行同步。

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

+0

谢谢,这些链接是有帮助的。我期待为我的问题使用持久数据库。但是当上述Web数据库中存储的数据很高时,我担心这种情况。这会影响用户端扩展或Chrome浏览器的性能吗? –

+0

这取决于你如何构建它。有太多因素可以给你更好的答案。 – Eejdoowad

相关问题