Spec-Zone.ru › Web APIs

API Периодической синхронизации фоновых данных веб-приложений

Безопасный контекст: Данная функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Экспериментальная функция: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров.

Примечание: Эта функция доступна в Web Workers.

API Периодической синхронизации фоновых данных веб-приложений предоставляет способ регистрации задач, которые будут выполняться в service worker с периодическими интервалами при наличии сетевого подключения. Эти задачи называются запросами периодической фоновой синхронизации.

Концепции и использование

API Периодической фоновой синхронизации позволяет веб-приложениям уведомлять свой service worker о необходимости внесения обновлений в заданные временные интервалы. Это может включать в себя загрузку последнего контента, когда устройство подключено к Wi-Fi, или поддержку фоновых обновлений приложения.

Минимальный интервал времени устанавливается при вызове API; однако пользовательский агент также может учитывать другие факторы, влияющие на то, когда service worker получит событие. Например, предыдущая активность пользователя на сайте или подключение к известной сети.

Интерфейс PeriodicSyncManager доступен через ServiceWorkerRegistration.periodicSync. Уникальный идентификатор тега используется для «наименования» события синхронизации, которое затем можно прослушивать в скрипте ServiceWorker. После получения события можно выполнить любые необходимые действия, такие как обновление кэша или загрузка новых ресурсов.

Поскольку этот API опирается на service worker, функции, предоставляемые этим API, доступны только в защищённом контексте.

Интерфейсы

PeriodicSyncManager Экспериментальная

Регистрирует задачи, которые будут выполняться в service worker с периодическими интервалами при наличии сетевого подключения. Эти задачи называются запросами периодической фоновой синхронизации.

PeriodicSyncEvent Экспериментальная

Представляет собой событие синхронизации, отправляемое в глобальную область видимости глобальной области видимости ServiceWorker. Оно предоставляет способ выполнения задач в service worker с сетевым подключением.

Расширения других интерфейсов

Следующие дополнения к API Service Worker указаны в спецификации Периодической фоновой синхронизации, чтобы обеспечить точку входа для использования Периодической фоновой синхронизации.

ServiceWorkerRegistration.periodicSync Только для чтения Экспериментальная

Возвращает ссылку на интерфейс PeriodicSyncManager для регистрации задач, которые будут выполняться через заданные интервалы.

periodicsync событие Экспериментальная

Происходит через заданные интервалы, которые были указаны при регистрации PeriodicSyncManager.

Примеры

Следующие примеры демонстрируют использование интерфейса.

Запрос периодической фоновой синхронизации

Следующая асинхронная функция регистрирует периодическую фоновую синхронизацию с минимальным интервалом в один день из контекста просмотра:

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!");
  }
}

Проверка задачи периодической фоновой синхронизации по тегу

Этот код проверяет, зарегистрирована ли задача Периодической фоновой синхронизации с заданным тегом.

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

Удаление задачи периодической фоновой синхронизации

Следующий код удаляет задачу Периодической фоновой синхронизации, чтобы остановить синхронизацию статей в фоновом режиме.

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

Прослушивание события периодической фоновой синхронизации в service worker

Следующий пример демонстрирует, как реагировать на событие периодической синхронизации в service worker.

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

Спецификации

Спецификация
Периодическая фоновая синхронизация веб-приложений

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
Web_Periodic_Background_Synchronization_API 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет
Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
Web_Periodic_Background_Synchronization_API 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет
getTags 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет
register 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет
unregister 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет

api.PeriodicSyncManager

Таблицы BCD загружаются только в браузере

api.ServiceWorkerGlobalScope.periodicsync_event

Таблицы BCD загружаются только в браузере

См. также

  • Статья об использовании Периодической фоновой синхронизации
  • Демо-приложение Периодической фоновой синхронизации

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Periodic_Background_Synchronization_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API