Что могут делать сервис-воркеры, чего не могут веб-воркеры? Или наоборот?
Кажется, что веб-воркеры - это часть функциональности сервис-воркеров. Это верно?
Ответы:
Есть большая разница в том, для чего они предназначены:
Веб-воркеры
Веб-воркеры предоставляют простое средство веб-контенту для запуска скриптов в фоновых потоках. Рабочий поток может выполнять задачи, не мешая пользовательскому интерфейсу. Кроме того, они могут выполнять ввод-вывод с помощью XMLHttpRequest (хотя атрибуты responseXML и channel всегда равны нулю). После создания рабочий может отправлять сообщения в код JavaScript, который его создал, отправляя сообщения в обработчик событий, указанный этим кодом (и наоборот).
Источник - Использование Web Workers
Сервисный работник
Сервисные работники, по сути, действуют как прокси-серверы, которые находятся между веб-приложениями, браузером и сетью (если они доступны). Они предназначены (среди прочего) для создания эффективных условий работы в автономном режиме, перехвата сетевых запросов и принятия соответствующих мер в зависимости от доступности сети и наличия обновленных активов на сервере. Они также предоставят доступ к push-уведомлениям и API фоновой синхронизации.
Таким образом, веб-воркеры удобны для запуска дорогостоящих скриптов, не вызывая зависания пользовательского интерфейса, а сервисные воркеры полезны для изменения ответа на сетевые запросы (например, при создании автономного приложения).
Ответ Buksy правильный, но, на мой взгляд, он не отвечает на исходный вопрос, а именно: «Что могут делать сервис- воркеры, чего не могут веб-воркеры? Или наоборот?»
Существуют фундаментальные различия в их жизненном цикле и количестве экземпляров на источник, которое у вас может быть. Коротко:
| Web Workers | Service Workers |
|--------------|--------------|------------------|
| Instances | Many per tab | One for all tabs |
| Lifespan | Same as tab | Independent |
| Intended use | Parallelism | Offline support |
Ответ Буксы - это, по сути, последняя строка таблицы. Предоставлено: я взял эту таблицу из книги Нолана Лоусона « Демистификация веб-воркеров и сервисных работников », начиная со слайда 35 .
В частности, вот как вы создаете и завершаете работу веб-воркеров:
тогда как у сервис-воркеров есть собственный жизненный цикл, который, по общему признанию, является их «самой сложной частью»:
Жизненный цикл обслуживающего работника
Таким образом, жизненный цикл - это одно из фундаментальных различий между ними (следствие их предполагаемого использования).
Раньше была огромная разница в поддержке браузеров : сервис-воркеры были недоступны в Safari для iOS до 11.3 (29 марта 2018 г.), см. Могу ли я использовать сервис-воркеры? Напротив, веб-воркеры уже в 2012 году имели гораздо лучшую поддержку браузера: могу ли я использовать веб-воркеры?
Если вам нужно поддерживать IE11, вы можете использовать только веб-воркеры: IE11 не имеет сервисных воркеров, и, очевидно, поддержка IE11 прекратится 14 октября 2025 года .
Существуют тонкие различия в их поддержке API в разных браузерах, см. HTML5 Worker Test (также Nolan Lawson). В конкретном браузере один вид работника может поддерживать определенный вызов API, а другой - нет. Посетите эту страницу и проверьте свой собственный браузер!