Відповіді:
Існує велика різниця в тому, для чого вони призначені:
Веб-працівники
Веб-працівники надають простий засіб веб-контенту для запуску скриптів у фонових потоках. Робоча нитка може виконувати завдання, не втручаючись у користувальницький інтерфейс. Крім того, вони можуть виконувати введення / виведення за допомогою XMLHttpRequest (хоча атрибути відповідіXML та канали завжди є недійсними). Після створення робітник може надсилати повідомлення до коду JavaScript, який його створив, розміщуючи повідомлення обробнику подій, визначеному цим кодом (і навпаки).
Джерело - Використання веб-працівників
Службовець
Сервісні працівники, по суті, виступають як проксі-сервери, які розміщуються між веб-додатками та веб-переглядачем та мережею (за наявності). Вони покликані (крім усього іншого) дати можливість створювати ефективний режим роботи в режимі офлайн, перехоплювати мережеві запити та вживати відповідних дій на основі наявності мережі та оновлених ресурсів, які перебувають на сервері. Вони також дозволять доступ до push-сповіщень та фонових API синхронізації.
Джерело - 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 (2018, 29 березня), див. Чи можна використовувати службових службовців? На відміну від цього, веб-працівники мали набагато кращу підтримку браузера вже у 2012 році: чи можу я використовувати веб-працівників?
Якщо вам доведеться підтримувати IE11, ви можете використовувати лише веб-працівників: IE11 не має службових працівників, і, мабуть, кінець підтримки IE11 - 14 жовтня 2025 року .
Існують тонкі відмінності в їх підтримці API у веб-переглядачах, див. Тест HTML5 Worker (також Нолан Лоусон). У конкретному веб-переглядачі один тип працівників може підтримувати певний виклик API, тоді як інший - ні. Зайдіть на цю сторінку і протестуйте власний браузер!