Подтвердить что ты не робот

Служебный работник против общего рабочего

В чем разница между Service Worker и Shared Worker?

Когда я должен использовать Service Worker вместо общего рабочего и наоборот?

4b9b3361

Ответ 1

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

Работники службы могут реагировать на события message, такие как общие сотрудники, но также имеют доступ к дополнительным событиям. Обработка событий fetch позволяет работникам служб перехватывать любой сетевой трафик (исходящий с контролируемой страницы) и выполнять определенные действия, включая отклик от кеша Request/Response. Существуют также планы, чтобы показать событие push для обслуживающего персонала, позволяя веб-приложениям получать push-сообщения в "фоновом режиме".

Другое важное отличие относится к упорству. Как только сервисный работник зарегистрирован для определенного происхождения и объема, он остается зарегистрированным на неопределенный срок. (Работник службы автоматически обновляется, если базовый script изменяется, и он может быть удален вручную или программно удален, но это исключение.) Поскольку служащий службы является постоянным и имеет жизнь, не зависящую от страниц, активных в веб-браузера, он открывает дверь для таких вещей, как использование их для питания вышеупомянутого push-сообщения - работник службы может "проснуться" и обработать событие push, пока работает браузер, независимо от того, какие страницы активны. Будущие функции веб-платформы, вероятно, также воспользуются этой настойчивостью.

Существуют и другие технические отличия, но с точки зрения более высокого уровня это то, что выделяется.

Ответ 2

A SharedWorker контекст - сеанс с состоянием и предназначен для мультиплексирования веб-страниц в одно приложение через асинхронную передачу сообщений (парадигма клиент/сервер). Его жизненный цикл основан на домене, а не на одной странице, как DedicatedWorker (двухуровневая парадигма).

Контекст ServiceWorker предназначен для бездействия. На самом деле это не постоянный сеанс - это инверсия управления (IoC) или парадигма обслуживания на основе событий. Он обслуживает события без гражданства, а не страницы с сохранением состояния.

Одной из целей является предоставление одновременных безопасных асинхронных конечных точек для длинных запросов (LRQ) для баз данных и других служб сохранения (например, облака). Точно, что пул потоков делает на других языках.

Например, если ваше веб-приложение выполняет множество параллельных безопасных LRQ для различных облачных сервисов, чтобы заполнить себя, ServiceWorkers - это то, что вы хотите. Вы можете выполнять десятки безопасных LRQ в секундах, не блокируя работу пользователя. SharedWorkers и DedicatedWorkers нелегко справиться с множеством параллельных безопасных LRQ. Кроме того, некоторые браузеры не поддерживают SharedWorkers.

Возможно, они должны были вызвать ServiceWorkers: CloudWorkers для ясности, но не все сервисы - это облака.

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

Загрузите несколько WebSockets для push-уведомлений и WebGL для графики, и вы можете создавать некоторые горячие веб-приложения для курения, которые работают как многопользовательские консольные игры.