Что могут делать сервис-воркеры, чего не могут веб-воркеры?

112

Что могут делать сервис-воркеры, чего не могут веб-воркеры? Или наоборот?

Кажется, что веб-воркеры - это часть функциональности сервис-воркеров. Это верно?

Бен Астон
источник

Ответы:

143

Есть большая разница в том, для чего они предназначены:

Веб-воркеры

Веб-воркеры предоставляют простое средство веб-контенту для запуска скриптов в фоновых потоках. Рабочий поток может выполнять задачи, не мешая пользовательскому интерфейсу. Кроме того, они могут выполнять ввод-вывод с помощью XMLHttpRequest (хотя атрибуты responseXML и channel всегда равны нулю). После создания рабочий может отправлять сообщения в код JavaScript, который его создал, отправляя сообщения в обработчик событий, указанный этим кодом (и наоборот).

Источник - Использование Web Workers

Сервисный работник

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

Источник - Service Worker API

Таким образом, веб-воркеры удобны для запуска дорогостоящих скриптов, не вызывая зависания пользовательского интерфейса, а сервисные воркеры полезны для изменения ответа на сетевые запросы (например, при создании автономного приложения).

Буксы
источник
1
Что могут делать сервис-воркеры, чего не могут веб-воркеры?
Pacerier
1
@Pacerier прочтите вторую цитату и последний абзац, чтобы ответить на ваш вопрос
Букси
Я согласен с Pacerier, что это не ответ на вопрос. Я только говорю, что делает один, а что другой. Читатель может прийти к выводу на основании этого, но хороший ответ должен прояснить, возможно, даже подтвердить или опровергнуть вывод читателя.
Кичия
Мне нравится другой ответ, который дал Али, это более широкое описание различий между этими двумя технологиями. Но я думаю, что последний абзац моего ответа ясно отвечает на вопрос, Web Workers могут помочь вам создать автономное приложение . Если вы думаете, что есть лучший ответ, не стесняйтесь добавить еще один :)
Buksy
1
@Buksy, Опечатка в вашем комментарии: [[Service]] Workers могут помочь вам создать офлайн-приложение
Ахмад Мобараки
149

Ответ 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, а другой - нет. Посетите эту страницу и проверьте свой собственный браузер!

Али
источник
3
Эта таблица очень хорошо это объясняет. Исходный вопрос, вероятно, лучше было бы сформулировать как «В чем разница между…»
Дренай
1
Что могут делать сервис-воркеры, чего не могут общие веб-воркеры?
Pacerier