我正在开发一个Chrome扩展程序,它必须存储其用户的数据。为此,我使用的是运行mysql数据库的托管服务器。但目前,任何数据的添加或更改都会向托管服务器发出请求。
Chrome扩展程序提供chrome.storage.local
API,适用于存储最多5mb的数据。我希望利用这个存储API,通过将其用作临时存储来减少对托管服务器的请求数。
我打算使用chrome.storage.onChanged.addListener
和chrome.storage.local.getBytesInUse
检查存储的数据是否超过某个阈值,然后只向远程服务器发出ajax请求以保存数据。成功响应后,chrome.storage中的旧数据将被刷新。
但是有可能丢失一些在服务器请求/响应周期过程中创建的新数据。
如何防止数据丢失?是否有任何替代解决方案可以减少从扩展中减少对远程服务器的请求数量的优化问题?
感谢。
答案 0 :(得分:1)
这不是关于Chrome扩展的问题。它更多的是关于脱机工作并智能同步的持久性数据库。这恰好是一个非常难以解决的问题。
最简单的解决方案是使用chrome.storage.sync。通过有限存储的警告,这可以免费获得持久性。在尝试其他选项之前,你一定要确定这是否可行。
否则,我建议您在推出自己的解决方案之前先查看第三方选项。您可能听说过离线工作的渐进式网络应用程序,以及互联网可用时的同步。
An article about the advantages of progressive web apps
PouchDB, a well regarded web database that works offline and syncs to other databases
看看那些。它应该值得一试。否则你最终会在黑客攻击之上建立黑客攻击,试图让同步工作。
......最后一件事......确保将您的远程数据库网址添加到manifest's permissions。