Spec-Zone.ru › Web APIs

API загрузки в фоновом режиме

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

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

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

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

Когда веб-приложение требует загрузки больших файлов, это часто представляет проблему, так как пользователю необходимо оставаться подключённым к странице для завершения загрузки. Если связь прерывается, вкладка закрывается или пользователь переходит на другую страницу, загрузка останавливается.

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

API загрузки в фоновом режиме решает эту проблему. Он создаёт способ, позволяющий разработчику веб-приложений указать браузеру выполнить некоторые загрузки в фоновом режиме, например, когда пользователь нажимает кнопку для загрузки видеофайла. Затем браузер выполняет загрузки видимым для пользователя способом, отображая прогресс и предоставляя способ отменить загрузку. После завершения загрузки браузер открывает сервисный рабочий процесс, и в этот момент ваше приложение может выполнить какие-либо действия с ответом, если это необходимо.

API загрузки в фоновом режиме позволит выполнить загрузку, если пользователь начнёт процесс в автономном режиме. После подключения к сети загрузка начнется. Если пользователь отключится от сети, процесс приостановится до тех пор, пока пользователь не подключится снова.

Интерфейсы

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

Словарь, где ключами являются идентификаторы загрузки в фоновом режиме, а значениями — объекты BackgroundFetchRegistration.

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

Представляет загрузку в фоновом режиме.

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

Представляет отдельный запрос и ответ на загрузку.

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

Тип события для события backgroundfetchabort и backgroundfetchclick.

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

Тип события для события backgroundfetchsuccess и backgroundfetchfail.

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

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

Возвращает ссылку на объект BackgroundFetchManager, который управляет операциями загрузки в фоновом режиме.

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

Срабатывает, когда операция загрузки в фоновом режиме была отменена пользователем или приложением.

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

Срабатывает, когда пользователь нажал на элемент пользовательского интерфейса для операции загрузки в фоновом режиме.

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

Срабатывает, когда хотя бы один из запросов в операции загрузки в фоновом режиме завершился ошибкой.

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

Срабатывает, когда все запросы в операции загрузки в фоновом режиме завершились успешно.

Примеры

Перед использованием загрузки в фоновом режиме проверьте поддержку браузера.

if (!("BackgroundFetchManager" in self)) {
  // Provide fallback downloading.
}

Для использования загрузки в фоновом режиме требуется зарегистрированный сервисный рабочий процесс. Затем вызовите backgroundFetch.fetch() для выполнения загрузки. Это возвращает обещание, которое выполняется с объектом BackgroundFetchRegistration.

Загрузка в фоновом режиме может загрузить несколько файлов. В нашем примере запросы выполняют загрузку MP3 и JPEG. Это позволяет загружать пакет файлов, который пользователь видит как один элемент (например, подкаст и обложку), одновременно.

navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    "my-fetch",
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
    {
      title: "Episode 5: Interesting things.",
      icons: [
        {
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
        },
      ],
      downloadTotal: 60 * 1024 * 1024,
    },
  );
});

Демо-приложение, реализующее загрузку в фоновом режиме, вы можете найти здесь.

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

Спецификация
Загрузка в фоновом режиме

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Background_Fetch_API 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
request 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
responseReady 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
END_OF_DOCUMENT_MARKER
Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
Background_Fetch_API 74 79 No 62 No 74 No 53 No 11.0 No
abort 74 79 No 62 No 74 No 53 No 11.0 No
downloadTotal 74 79 No 62 No 74 No 53 No 11.0 No
downloaded 74 79 No 62 No 74 No 53 No 11.0 No
failureReason 74 79 No 62 No 74 No 53 No 11.0 No
id 74 79 No 62 No 74 No 53 No 11.0 No
match 74 79 No 62 No 74 No 53 No 11.0 No
matchAll 74 79 No 62 No 74 No 53 No 11.0 No
progress_event 74 79 No 62 No 74 No 53 No 11.0 No
recordsAvailable 74 79 No 62 No 74 No 53 No 11.0 No
result 74 79 No 62 No 74 No 53 No 11.0 No
uploadTotal 74 79 No 62 No 74 No 53 No 11.0 No
uploaded 74 79 No 62 No 74 No 53 No 11.0 No
Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
Background_Fetch_API 74 79 No 62 No 74 No 53 No 11.0 No
fetch 74 79 No 62 No 74 No 53 No 11.0 No
get 74 79 No 62 No 74 No 53 No 11.0 No
getIds 74 79 No 62 No 74 No 53 No 11.0 No

api.BackgroundFetchManager

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

api.BackgroundFetchRegistration

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

api.BackgroundFetchRecord

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

См. также

  • Introducing Background Fetch
  • Background Fetch - HTTP 203

© 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/Background_Fetch_API

Spec-Zone.ru

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