Web Periodic Background Synchronization API

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Web Periodic Background Synchronization API bietet eine Möglichkeit, Aufgaben zu registrieren, die in einem Service Worker in regelmäßigen Abständen bei vorhandener Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisierungsanfragen bezeichnet.

Konzepte und Verwendung

Die Periodic Background Sync API ermöglicht es Webanwendungen, ihren Service Worker darauf hinzuweisen, in regelmäßigen Abständen Aktualisierungen vorzunehmen. Mögliche Verwendungen umfassen das Abrufen der neuesten Inhalte, während ein Gerät mit Wi-Fi verbunden ist, oder Hintergrundaktualisierungen einer Anwendung zu ermöglichen.

Das Mindestzeitintervall wird festgelegt, wenn die API aufgerufen wird; der Benutzeragent kann jedoch auch andere Faktoren berücksichtigen, die beeinflussen, wann der Service Worker das Ereignis erhält. Beispielsweise kann vorheriges Engagement der Website oder eine Verbindung zu einem bekannten Netzwerk einen Einfluss haben.

Die PeriodicSyncManager-Schnittstelle ist über ServiceWorkerRegistration.periodicSync verfügbar. Ein eindeutiger Tag-Identifikator wird festgelegt, um das Synchronisierungsereignis zu "benennen", das dann im Skript des ServiceWorker abgehört werden kann. Sobald das Ereignis empfangen wird, können Sie jede verfügbare Funktionalität ausführen, wie zum Beispiel das Aktualisieren von Caches oder das Abrufen neuer Ressourcen.

Da diese API auf Service Workern basiert, ist die von dieser API bereitgestellte Funktionalität nur in einem sicheren Kontext verfügbar.

Schnittstellen

PeriodicSyncManager Experimentell

Registriert Aufgaben, die in einem Service Worker in regelmäßigen Abständen bei vorhandener Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisierungsanfragen bezeichnet.

PeriodicSyncEvent Experimentell

Stellt ein Synchronisationsereignis dar, das an den globalen Geltungsbereich eines ServiceWorker gesendet wird. Es bietet eine Möglichkeit, Aufgaben im Service Worker mit Netzwerkverbindung auszuführen.

Erweiterungen zu anderen Schnittstellen

Die folgenden Ergänzungen zur Service Worker API sind in der Periodic Background Sync-Spezifikation angegeben, um einen Einstiegspunkt für die Nutzung der periodischen Hintergrundsynchronisierung bereitzustellen.

ServiceWorkerRegistration.periodicSync Schreibgeschützt Experimentell

Gibt eine Referenz auf die PeriodicSyncManager-Schnittstelle zurück, um Aufgaben zu registrieren, die in bestimmten Intervallen ausgeführt werden sollen.

periodicsync Ereignis Experimentell

Tritt in regelmäßigen Abständen auf, die bei der Registrierung eines PeriodicSyncManager festgelegt wurden.

Beispiele

Die folgenden Beispiele zeigen, wie die Schnittstelle verwendet wird.

Anfordern einer periodischen Hintergrundsynchronisierung

Die folgende asynchrone Funktion registriert eine periodische Hintergrundsynchronisierung in einem Mindestintervall von einem Tag aus einem Browsing-Kontext:

js
async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register("get-latest-news", {
      minInterval: 24 * 60 * 60 * 1000,
    });
  } catch {
    console.log("Periodic Sync could not be registered!");
  }
}

Überprüfen einer periodischen Hintergrundsynchronisierung nach Tag

Dieser Code überprüft, ob eine periodische Hintergrundsynchronisierungsaufgabe mit einem gegebenen Tag registriert ist.

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.getTags().then((tags) => {
    if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
  });
});

Entfernen einer periodischen Hintergrundsynchronisierungsaufgabe

Der folgende Code entfernt eine periodische Hintergrundsynchronisierungsaufgabe, um den Sync von Artikeln im Hintergrund zu stoppen.

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.unregister("get-latest-news");
});

Abhören eines periodischen Hintergrundsynchronisierungsereignisses innerhalb eines Service Workers

Das folgende Beispiel zeigt, wie auf ein periodisches Synchronisierungsereignis im Service Worker reagiert wird.

js
self.addEventListener("periodicsync", (event) => {
  if (event.tag === "get-latest-news") {
    event.waitUntil(fetchAndCacheLatestNews());
  }
});

Spezifikationen

Specification
Web Periodic Background Synchronization

Browser-Kompatibilität

api.PeriodicSyncManager

BCD tables only load in the browser

api.ServiceWorkerGlobalScope.periodicsync_event

BCD tables only load in the browser

Siehe auch