Віды workers у web
Пытанне
Якія віды workers існуюць у web?
Адказ ад ChatGPT 😉 😆
Кароткі адказ
Html-спецыфікацыя вызначае 3 тыпы воркераў:
-
Dedicated Workers
- гэта скрыпты, якія выконваюцца ў фонавым рэжыме, паралельна з асноўнай плынёй.Dedicated workers
даступныя толькі скрыпту, якія іх выклікалі. Яны дазваляюць выконваць складаныя вылічэнні ці апрацоўку вялікіх аб'емаў даных, не блакуючы асноўную плынь і як вынік - карыстальніцкі інтэрфейс. Не маюць доступу кDOM
. Могуць абменьвацца данымі толькі са скрыптом, які іх стварыў. -
Shared Workers
- гэта варыянт workers, які дазваляе некалькім скрыптам (запушчаным на розных укладках,iframe
ці вокнах) абменьвацца інфармацыяй з адным і тым жа фонавым скрыптам. Гэта карысна для рэалізацыі функцый, якія патрабуюць каардынацыі паміж рознымі часткамі аплікацыі, напрыклад, сінхранізацыі даных ці абмену паведамленнямі. Доступ да воркера можа атрымаць любы працэс, які мае тую ж самую крыніцу, што і воркер (напрыклад - розныя ўкладкі браўзэра, iframe ці іншыя воркеры). -
Service Workers
- гэта асаблівы тып workers, які дзейнічае як проксі-сервер паміж вэб-аплікацыяй, браўзэрам і сеткай. Яны могуць выкарыстоўвацца для кэшавання рэсурсаў для працы ў афлайн-рэжыме, фонавай сінхранізацыі даных і push-паведамленняў.Service Workers
выконваюць ключавую ролю ў стварэнні прагрэсіўных вэб-прыкладанняў (PWA
).
Падрабязны адказ
Worker
- гэта асобная плынь (не працэс) на узроўні аперацыйнай сістэмы. Web Workers
cтвараюцца з дапамогай класа Worker
.
Усе 3 віды воркераў наследуюцца ад абстрактнага класа AbstractWorker
. Гэта важна, бо існуе шмат блытаніны для гэтага адказу ў розных крыніцах.
Вось некалькі прыкладаў выкарыстоўвання воркераў:
- выкананне задач з інтэнсіўнай нагрузкай працэсара
- апытанне URL-адрасоў у фонавым рэжыме
- у онлайн-рэдактарах кода для падсвятлення сінтаксісу
- праверка правапісання
- рэндэрынг 3-мерных сцэн візуалізацыі
- шыфраваннне
- папярэдняя загрузка даных
Dedicated workers
маюць cross-origin-абмежаванні, Shared Workers
могуць пераадольваць іх.
- Dedicated Workers
Dedicated Workers
даступныя толькі скрыпту, якія іх выклікалі. Скрыпт выконваецца ў фонавай плыні, які аддзелены ад асноўнай плыні веб-апликацыі. Перавага складаецца ў тым, што рэсурсаёмкія вылічэнні могуць выконвацца ў асобным струмені, дазваляючы выкарыстоўваць асноўны струмень без блакавання і запавольвання. Web Workers
не маюць доступу к DOM
, але маюць доступ да многіх іншых магчымасцяў, прадастаўляемымі fetch
, WebSockets
, XMLHttpRequest
, IndexedDB
, Navigator
, Array
, Date
, Math
, String
, setTimeout
, setInterval
і іншых.
Выкарыстоўваюцца, каб перакласці цяжкія вылічэнні на іншы (фонавы) струмень. Гэта дазваляе пазбегнуць блакіроўкі карыстальніцкага інтэрфэйсу важкімі задачамі.
Для стварэння воркера выкарыстоўваецца канструктар Worker
:
const myWorker = new Worker("worker.js");
- Shared Workers
Shared Workers
даступныя з некалькіх скрыптаў, нават калі яны запушчаныя на розных укладках, iframe
ці вокнах. Для зносін з Shared Worker
адчыняецца порт, які скрыпты могуць выкарыстоўваць для сувязі з воркерам (гэта робіцца няяўна).
Ва ўсім астатнім яны падобныя на Deducated Workers
.
Для стварэння воркера выкарыстоўваецца канструктар SharedWorker
:
const myWorker = new SharedWorker("worker.js");
- Service Workers
Дзейнічаюць як проксі-серверы, якія знаходзяцца паміж веб-праграмамі, а таксама браўзерам і сеткай (пры наяўнасці). Яны прызначаныя (сярод іншага) для стварэння эфектыўнай offline-працы (кэшавання), дазваляюць перахопу сеткавых запытаў (fetch
) ці праслухоўвання падзеі Push API
у фонавым рэжыме (push
). З'яўляюцца ключавым кампанентам для стварэння Progresive Web Applications
(PWA
).
Адзін service worker
можа кантраляваць усе актыўныя ўкладкі ў межах, у якіх ён быў зарэгістраваны.
Service worker
працягне працаваць нават калі на сайце няма адчыненых актыўных укладак.
navigator.serviceWorker.register('/service-worker.js');
Існуе шэраг бібліятэк, якія дазволяць спрасціць работу з Web Workers
ці дадаць магчымасць працаваць з DOM
:
- Comlink (палягчае працу з workers, не працуе з
DOM
) - Virtual DOM libraries (не дае прамы доступ да
DOM
зWeb Worker
, але дазваляе кіраваць элементамі інтэрфейсу ў фонавым рэжыме) - WorkerDOM (эксперыментальны праект, які дае поўны доступ да
DOM
) - OffscreenCanvas (дазваляе маляваць на
canvas
з воркера)
Дадаткова: Worklets
Раз пораз можна сустрэць побач з апісаннем Workers
успамін пра Worklets
.
Важна! Worklets
не наследуецца ад класа AbstractWorkers
, як іншыя воркеры, і ў спецыфікацыі абазначаны асобна.
Інтэрфейс Worklet
з'яўляецца палегчанай версіяй Web Workers
і дае распрацоўшчыкам доступ да нізкаўзроўневых частак канвеера рэндэрынгу.
Worklets
- гэта новая канцэпцыя, уведзеная ў спецыфікацыі CSS Houdini
. Працуюць у асобнай плыні. Дазваляюць вэб-распрацоўшчыкам ствараць новыя высокапрадукцыйныя анімацыі і эфекты, якія раней былі немагчымыя толькі з CSS
без уплыву на прадукцыйнасць асноўнай плыні.
Worklets
абмежаваныя пэўнымі выпадкамі выкарыстання; іх нельга выкарыстоўваць для адвольных вылічэнняў, так як Web Workers
.
Інтэрфейс Worklets
абстрагуе ўласцівасці і метады, агульныя для ўсіх відаў worklets
, і не можа быць створаны непасрэдна. Замест гэтага вы можаце выкарыстоўваць адзін з наступных класаў:
AudioWorklet
, AnimationWorklet
, LayoutWorklet
, SharedStorageWorklet
.
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)