Web Periodic Background Synchronization API
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
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 mit Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisationsanfragen bezeichnet.
Konzepte und Anwendung
Die Periodic Background Sync API ermöglicht es Webanwendungen, ihrem Service Worker mitzuteilen, in regelmäßigen Zeitabständen Aktualisierungen vorzunehmen. Dies kann verwendet werden, um die neuesten Inhalte abzurufen, während ein Gerät mit einem WLAN verbunden ist, oder um Hintergrundaktualisierungen für eine Anwendung zu ermöglichen.
Das minimale Zeitintervall wird bei der Nutzung der API festgelegt; jedoch könnte der Benutzeragent auch andere Faktoren berücksichtigen, die beeinflussen, wann der Service Worker das Ereignis erhält. Zum Beispiel vorheriges Engagement der Website oder die Verbindung zu einem bekannten Netzwerk.
Die PeriodicSyncManager-Schnittstelle ist über ServiceWorkerRegistration.periodicSync verfügbar. Ein einzigartiger Kennzeichner wird festgelegt, um das Synchronisationsereignis zu "benennen", das dann im ServiceWorker-Skript abgehört werden kann. Sobald das Ereignis empfangen wird, können beliebige verfügbare Funktionen ausgeführt werden, wie zum Beispiel das Aktualisieren von Caches oder das Abrufen neuer Ressourcen.
Da diese API auf Service Worker basiert, ist die Funktionalität, die diese API bietet, nur in einem sicheren Kontext verfügbar.
Schnittstellen
PeriodicSyncManager-
Registriert Aufgaben, die in einem Service Worker in regelmäßigen Abständen mit Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisationsanfragen bezeichnet.
PeriodicSyncEvent-
Stellt ein Synchronisationsereignis dar, das an den globalen Bereich eines ServiceWorkers 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 Verwendung von Periodic Background Sync bereitzustellen.
ServiceWorkerRegistration.periodicSyncSchreibgeschützt-
Gibt einen Verweis auf die
PeriodicSyncManager-Schnittstelle zurück, um Aufgaben zu registrieren, die in bestimmten Intervallen ausgeführt werden sollen. periodicsyncEreignis-
Tritt in den angegebenen regelmäßigen Abständen auf, die beim Registrieren eines
PeriodicSyncManagerfestgelegt wurden.
Beispiele
Die folgenden Beispiele zeigen, wie die Schnittstelle verwendet wird.
Anfordern einer periodischen Hintergrundsynchronisation
Die folgende asynchrone Funktion registriert eine periodische Hintergrundsynchronisation in einem Mindestintervall von einem Tag aus einem Browser-Kontext heraus:
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üfung einer periodischen Hintergrundsynchronisation nach Tag
Dieser Code überprüft, ob eine Periodic Background Sync-Aufgabe mit einem bestimmten Tag registriert ist.
navigator.serviceWorker.ready.then((registration) => {
registration.periodicSync.getTags().then((tags) => {
if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
});
});
Entfernen einer periodischen Hintergrundsynchronisationsaufgabe
Der folgende Code entfernt eine Periodic Background Sync-Aufgabe, um das Synchronisieren von Artikeln im Hintergrund zu stoppen.
navigator.serviceWorker.ready.then((registration) => {
registration.periodicSync.unregister("get-latest-news");
});
Abhören einer periodischen Hintergrundsynchronisation innerhalb eines Service Workers
Das folgende Beispiel zeigt, wie auf ein periodisches Synchronisationsereignis im Service Worker reagiert wird.
self.addEventListener("periodicsync", (event) => {
if (event.tag === "get-latest-news") {
event.waitUntil(fetchAndCacheLatestNews());
}
});
Spezifikationen
| Spezifikation |
|---|
| Web Periodic Background Synchronization> |