storage.sync

Repräsentiert den sync-Speicherbereich. Elemente im sync-Speicher werden vom Browser synchronisiert. Die Daten sind dann auf allen Instanzen des Browsers verfügbar, bei denen der Benutzer angemeldet ist (zum Beispiel bei Verwendung eines Mozilla-Kontos in Desktop-Versionen von Firefox oder eines Google-Kontos in Chrome) über verschiedene Geräte hinweg.

Für den Desktop-Firefox muss der Benutzer in der "Sync"-Sektion in "about:preferences" Add-ons ausgewählt haben. Firefox für Android synchronisiert keine Daten mit dem Benutzerkonto. Siehe Firefox Bug 1625257.

Die Implementierung von storage.sync in Firefox hängt von der Add-on-ID ab. Wenn Sie storage.sync verwenden, müssen Sie eine ID für Ihre Erweiterung mit dem browser_specific_settings manifest.json Schlüssel festlegen.

Die Hauptanwendung dieses API ist es, Präferenzen bezüglich Ihrer Erweiterung zu speichern und dem Benutzer zu ermöglichen, diese auf verschiedene Profile zu synchronisieren.

Speicherquoten für Synchronisierungsdaten

Der Browser erzwingt Grenzen für die Menge an Daten, die jede Erweiterung im Synchronisierungsbereich 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 Wertes plus der Länge jedes Schlüssels. 102400
Maximale Elementgröße Die maximale Größe eines einzelnen Elements, das jede Erweiterung im Synchronisierungsspeicherbereich speichern darf, gemessen durch die JSON-Stringifizierung des Wertes 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 zu ermitteln, wie viel ihres Kontingents bereits genutzt wird.

Synchronisierungsprozess

In Firefox werden Erweiterungsdaten alle 10 Minuten synchronisiert oder wann immer der Benutzer Sync jetzt auswählt (in Einstellungen > Sync oder vom Mozilla-Kontosymbol aus). Wenn der Browser eine Synchronisierung durchführt, wird für jeden gespeicherten Schlüssel:

  • der Wert auf dem Server mit dem Wert bei der letzten Synchronisierung verglichen; wenn sie unterschiedlich sind, wird der Wert vom Server in den Schlüssel im Sync-Speicher des Browsers geschrieben.
  • die Sync-Speicherwerte des Browsers mit dem Wert auf dem Server verglichen; wenn sie unterschiedlich sind, wird der Schlüsselwert des Browsers auf den Server geschrieben.

Das bedeutet, dass bei jedem Schlüssel eine Änderung auf dem Server Vorrang vor einer Änderung im Sync-Speicher des Browsers hat.

Dieser Mechanismus ist im Allgemeinen in Ordnung für Daten wie Benutzereinstellungen oder andere globale Einstellungen, die vom Benutzer geändert werden.

Ein Schlüsselwert kann jedoch in einem Browser aktualisiert und synchronisiert und dann in einem zweiten Browser aktualisiert werden, bevor der zweite Browser synchronisiert ist, was dazu führt, dass das lokale Update bei der Synchronisierung überschrieben wird. Dieser Mechanismus ist daher nicht ideal für Daten, die gerätenübergreifend aggregiert werden, wie z.B. eine Zählung von Seitenaufrufen oder wie oft eine Option verwendet wird. Um solche Fälle zu handhaben, verwenden Sie storage.sync.onChanged, um auf Synchronisierungs-Updates vom Server zu hören (zum Beispiel die Anzahl von Seitenaufrufen in einer anderen Browser-Instanz). Passen Sie dann den Wert lokal an, um den Remote-Wert zu berücksichtigen (zum Beispiel aktualisieren Sie die Gesamtanzahl der Ansichten basierend auf der Remote-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 die Menge an Speicherplatz (in Bytes), die für ein oder mehrere Elemente im Speicherbereich verwendet wird.

storage.sync.set()

Speichert ein oder mehrere Elemente im Speicherbereich. Wenn das Element existiert, 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.

Beispielerweiterungen

Browser-Kompatibilität

Hinweis: Diese API basiert auf Chromiums chrome.storage API. Diese Dokumentation ist abgeleitet von storage.json im Chromium-Code.