storage.sync
表示 sync 儲存區域。sync 儲存中的專案會由瀏覽器同步。然後,這些資料在使用者登入的瀏覽器所有例項上均可用(例如,當在桌面版 Firefox 上使用 Mozilla 賬戶,或在 Chrome 上使用 Google 賬戶時),跨越不同裝置。
對於桌面版 Firefox,使用者必須在 "about:preferences" 的“同步”部分選中“擴充套件及主題”。Android 版 Firefox 不會將資料與使用者賬戶同步。請參閱 Firefox bug 1625257。
Firefox 中 storage.sync 的實現依賴於擴充套件 ID。如果使用 storage.sync,您必須使用 browser_specific_settings manifest.json 鍵為您的擴充套件設定 ID。
此 API 的主要用例是儲存擴充套件的偏好設定,並允許使用者將這些偏好設定同步到不同的配置檔案。
同步資料的儲存配額
瀏覽器對每個擴充套件在同步區域中允許儲存的資料量強制執行限制
| 名稱 | 描述 | 位元組值 |
|---|---|---|
| 最大總大小 | 每個擴充套件在同步儲存區域中允許儲存的資料的最大總量,按每個值加上每個鍵長度的 JSON 字串化測量。 | 102400 |
| 最大專案大小 | 每個擴充套件在同步儲存區域中允許儲存的任何單個專案的大小,按專案值加上其鍵長度的 JSON 字串化測量。 | 8192 |
| 最大專案數量 | 每個擴充套件可以在同步儲存區域中儲存的最大專案數量。 | 512 |
如果擴充套件嘗試儲存超出這些限制的專案,則呼叫 storage.sync.set() 將會因錯誤而被拒絕。擴充套件可以使用 storage.sync.getBytesInUse() 來了解其配額的多少正在被使用。
同步過程
在 Firefox 中,擴充套件資料每 10 分鐘同步一次,或者在使用者選擇“立即同步”(位於“設定” > “同步”或從 Mozilla 賬戶圖示處)時進行同步。當瀏覽器執行同步時,對於儲存的每個鍵,它會
- 將伺服器上的值與上次同步時的值進行比較;如果它們不同,則將伺服器上的值寫入瀏覽器同步儲存中的該鍵。
- 將瀏覽器同步儲存中的值與伺服器上的值進行比較;如果它們不同,則將瀏覽器中的鍵值寫入伺服器。
這意味著,對於每個鍵,伺服器上的更改優先於瀏覽器同步儲存中的更改。
此機制通常適用於使用者偏好設定或其他使用者更改的全域性設定等資料。
然而,一個鍵的值可能在一個瀏覽器上更新並同步,然後在第二個瀏覽器同步之前在第二個瀏覽器上更新,從而導致本地更新在同步期間被覆蓋。因此,此機制不適用於跨裝置聚合的資料,例如頁面瀏覽量計數或某個選項的使用次數。要處理此類情況,請使用 storage.sync.onChanged 來監聽來自伺服器的同步更新(例如,另一個瀏覽器例項上的頁面瀏覽量計數)。然後,在本地調整該值以考慮遠端值(例如,根據遠端計數和新的本地計數更新總瀏覽量)。
方法
sync 物件實現了 storage.StorageArea 型別上定義的那些方法
storage.sync.get()-
從儲存區域檢索一個或多個專案。
storage.sync.getBytesInUse()-
獲取儲存區域中一個或多個專案所使用的儲存空間(以位元組為單位)。
storage.sync.getKeys()-
檢索儲存區域中所有專案的鍵。
storage.sync.set()-
將一個或多個專案儲存到儲存區域。如果專案已存在,則更新其值。
storage.sync.remove()-
從儲存區域中移除一個或多個專案。
storage.sync.clear()-
移除儲存區域中的所有專案。
事件
sync 物件實現了 storage.StorageArea 型別上定義的那些事件
storage.sync.onChanged-
當儲存區域中的一個或多個專案發生更改時觸發。
擴充套件程式示例
瀏覽器相容性
載入中…
注意:此 API 基於 Chromium 的 chrome.storage API。本文件來源於 Chromium 程式碼中的 storage.json。