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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.