storage.sync
Repräsentiert den sync
Speicherbereich. Elemente im sync
Speicher werden vom Browser synchronisiert. Die Daten sind dann in allen Instanzen des Browsers verfügbar, in die der Benutzer eingeloggt ist (zum Beispiel bei Verwendung eines Mozilla-Kontos auf Desktop-Versionen von Firefox oder eines Google-Kontos auf Chrome) über verschiedene Geräte hinweg.
Für Firefox auf dem Desktop muss der Benutzer Add-ons
im Abschnitt "Sync" in "about:preferences"
ausgewählt haben. Firefox für Android synchronisiert keine Daten mit dem Konto des Benutzers. Siehe Firefox-Bug 1625257.
Die Implementierung von storage.sync
in Firefox basiert auf der Add-on ID. Wenn Sie storage.sync
verwenden, müssen Sie eine ID für Ihre Erweiterung mit dem browser_specific_settings
manifest.json-Schlüssel festlegen.
Der Hauptanwendungsfall dieser API besteht darin, Einstellungen Ihrer Erweiterung zu speichern und es dem Benutzer zu ermöglichen, sie mit verschiedenen Profilen zu synchronisieren.
Speicherkontingente für Sync-Daten
Der Browser erzwingt Grenzen für die Menge an Daten, die jede Erweiterung im Synchronisierungsspeicherbereich speichern darf:
Name | Beschreibung | Wert in Bytes |
---|---|---|
Maximale Gesamtgröße | Die maximale Gesamtmenge an Daten, die jede Erweiterung im Synchronisierungsspeicherbereich speichern darf, gemessen durch die JSON-Stringifizierung jedes Werts plus der Länge jedes Schlüssels. | 102400 |
Maximale Elementgröße | Die maximale Größe eines Elements, das jede Erweiterung im Synchronisierungsspeicherbereich speichern darf, gemessen durch die JSON-Stringifizierung des Werts des Elements plus der Länge seines Schlüssels. | 8192 |
Maximale Anzahl von Elementen | Die maximale Anzahl von Elementen, die jede Erweiterung im Synchronisierungsspeicherbereich speichern kann. |
512 |
Wenn eine Erweiterung versucht, Elemente zu speichern, die diese Grenzen überschreiten, werden Aufrufe an storage.sync.set()
mit einem Fehler abgelehnt. Eine Erweiterung kann storage.sync.getBytesInUse()
verwenden, um herauszufinden, wie viel ihres Kontingents verwendet wird.
Synchronisierungsprozess
In Firefox werden Erweiterungsdaten alle 10 Minuten synchronisiert oder wann immer der Benutzer Jetzt synchronisieren auswählt (in Einstellungen > Sync oder über das Mozilla-Kontosymbol). Wenn der Browser eine Synchronisierung durchführt, vergleicht er für jeden gespeicherten Schlüssel den Wert auf dem Server mit dem Wert bei der letzten Synchronisierung. Wenn sie unterschiedlich sind, wird der Wert vom Server auf den Schlüssel im Synchronisierungsspeicher des Browsers geschrieben. Der Browser vergleicht auch die Werte des Synchronisierungsspeichers mit dem Wert auf dem Server; wenn sie unterschiedlich sind, schreibt er den Schlüsselwert des Browsers auf den Server.
Dies bedeutet, dass bei jedem Schlüssel eine Änderung auf dem Server Vorrang vor einer Änderung im Synchronisierungsspeicher des Browsers hat.
Dieser Mechanismus ist im Allgemeinen für Daten wie Benutzereinstellungen oder andere globale Einstellungen, die vom Benutzer geändert werden, in Ordnung.
Es kann jedoch vorkommen, dass der Wert eines Schlüssels in einem Browser aktualisiert und synchronisiert wird und dann in einem zweiten Browser aktualisiert wird, bevor der zweite Browser synchronisiert wird, was dazu führt, dass das lokale Update während der Synchronisierung überschrieben wird. Dieser Mechanismus ist daher nicht ideal für Daten, die über mehrere Geräte aggregiert werden, wie eine Zählung der Seitenaufrufe oder wie oft eine Option verwendet wird. Um solche Fälle zu behandeln, verwenden Sie storage.sync.onChanged
, um auf Synchronisierungsaktualisierungen vom Server (wie z.B. eine Zählung der Seitenaufrufe auf einer anderen Browserinstanz) zu hören. Dann passen Sie den Wert lokal an, um den Remote-Wert zu berücksichtigen (z.B. aktualisieren Sie die Gesamtansichten basierend auf der entfernten Zählung und der neuen lokalen Zählung).
Methoden
Das sync
-Objekt implementiert die auf dem storage.StorageArea
Typ definierten Methoden:
storage.sync.get()
-
Ruft ein oder mehrere Elemente aus dem Speicherbereich ab.
storage.sync.getBytesInUse()
-
Ermittelt den Speicherplatz (in Bytes), der für ein oder mehrere Elemente im Speicherbereich verwendet wird.
storage.sync.set()
-
Speichert ein oder mehrere Elemente im Speicherbereich. Existiert das Element bereits, wird sein Wert aktualisiert.
storage.sync.remove()
-
Entfernt ein oder mehrere Elemente aus dem Speicherbereich.
storage.sync.clear()
-
Entfernt alle Elemente aus dem Speicherbereich.
Ereignisse
Das sync
-Objekt implementiert die auf dem storage.StorageArea
Typ definierten Ereignisse:
storage.sync.onChanged
-
Wird ausgelöst, wenn sich ein oder mehrere Elemente im Speicherbereich ändern.
Beispiel-Erweiterungen
Browser-Kompatibilität
BCD tables only load in the browser
Hinweis: Diese API basiert auf der Chromium-API chrome.storage
. Diese Dokumentation ist abgeleitet von storage.json
im Chromium-Code.