Введение в JavaScript Service Workers

Введение в JavaScript Service Workers

Вы когда-нибудь задумывались, как некоторые веб-сайты продолжают работать, даже когда вы не в сети? Секрет прост: на этих сайтах есть сервис-воркеры.





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





Windows 10 не ложится спать

Что такое сервисные работники?

Работники сферы обслуживания – это особый тип Веб-воркеры JavaScript . Сервисный работник — это файл JavaScript, который работает как прокси-сервер. Он перехватывает исходящие сетевые запросы от вашего приложения, позволяя создавать собственные ответы. Например, вы можете предоставлять кэшированные файлы пользователю, когда он не в сети.





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

Почему сервисные работники?

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



AppCache казался хорошей идеей, потому что он позволял вам очень легко указывать активы для кэширования. Тем не менее, он сделал много предположений о том, что вы пытались сделать, а затем ужасно сломался, когда ваше приложение не полностью соответствовало этим предположениям. Прочтите книгу Джейка Арчибальда (к сожалению, с не очень удачным названием, но хорошо написанная). Кэш приложений — это придурок Больше подробностей. (Источник: МДН )

Сервисные работники — это текущая попытка уменьшить ограничения веб-приложений без недостатков таких технологий, как AppCache.





Примеры использования сервис-воркеров

Итак, что именно сервисные работники позволяют вам делать? Сервисные работники позволяют добавлять в веб-приложение функции, характерные для нативных приложений. Они также могут обеспечить нормальную работу на устройствах, которые не поддерживают сервисные работники. Подобные приложения иногда называют Прогрессивные веб-приложения (PWA) .

Вот некоторые из возможностей сервисных работников:





  • Разрешение пользователю продолжать использовать приложение (или, по крайней мере, его часть), когда он больше не подключен к Интернету. Сервисные работники достигают этого, обслуживая кэшированные активы в ответ на запросы.
  • В браузерах на основе Chromium сервис-воркер является одним из требований для установки веб-приложения.
  • Сервисные работники необходимы для того, чтобы ваше веб-приложение могло реализовывать push-уведомления.

Жизненный цикл сервис-воркера

Сервисные работники могут контролировать запросы для всего сайта или только для части страниц сайта. У конкретной веб-страницы может быть только один активный сервис-воркер, и все сервис-воркеры имеют жизненный цикл, основанный на событиях. Жизненный цикл сервис-воркера обычно выглядит так:

  1. Регистрация и загрузка рабочего. Жизнь сервис-воркера начинается, когда он регистрируется файлом JavaScript. Если регистрация прошла успешно, сервис-воркер загружается, а затем запускается внутри специального потока.
  2. Когда страница, управляемая сервис-воркером, загружается, сервис-воркер получает событие «установить». Это всегда первое событие, которое получает сервис-воркер, и вы можете настроить обработчик этого события внутри работника. Событие install обычно используется для извлечения и/или кэширования любых ресурсов, которые нужны сервисному работнику.
  3. После завершения установки сервис-воркер получает событие «активировать». Это событие позволяет рабочему процессу очистить избыточные ресурсы, используемые предыдущими рабочими службами. Если вы обновляете сервис-воркера, событие активации будет срабатывать только тогда, когда это безопасно. Это когда нет загруженных страниц, все еще использующих старую версию сервис-воркера.
  4. После этого сервис-воркер получает полный контроль над всеми страницами, которые были загружены после его успешной регистрации.
  5. Последней фазой жизненного цикла является избыточность, которая происходит, когда сервис-воркер удаляется или заменяется более новой версией.

Как использовать сервис-воркеров в JavaScript

API сервис-воркера ( МДН ) предоставляет интерфейс, позволяющий создавать сервис-воркеры и взаимодействовать с ними в JavaScript.