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

相關問題