Галоўная > Віды workers у web

Віды workers у web

сумоўе
js

Пытанне

Якія віды workers існуюць у web?

Адказ ад ChatGPT 😉 😆

workers in web joke

Кароткі адказ

Html-спецыфікацыя вызначае 3 тыпы воркераў:

  1. Dedicated Workers - гэта скрыпты, якія выконваюцца ў фонавым рэжыме, паралельна з асноўнай плынёй. Dedicated workers даступныя толькі скрыпту, якія іх выклікалі. Яны дазваляюць выконваць складаныя вылічэнні ці апрацоўку вялікіх аб'емаў даных, не блакуючы асноўную плынь і як вынік - карыстальніцкі інтэрфейс. Не маюць доступу к DOM. Могуць абменьвацца данымі толькі са скрыптом, які іх стварыў.

  2. Shared Workers - гэта варыянт workers, які дазваляе некалькім скрыптам (запушчаным на розных укладках, iframe ці вокнах) абменьвацца інфармацыяй з адным і тым жа фонавым скрыптам. Гэта карысна для рэалізацыі функцый, якія патрабуюць каардынацыі паміж рознымі часткамі аплікацыі, напрыклад, сінхранізацыі даных ці абмену паведамленнямі. Доступ да воркера можа атрымаць любы працэс, які мае тую ж самую крыніцу, што і воркер (напрыклад - розныя ўкладкі браўзэра, iframe ці іншыя воркеры).

  3. Service Workers - гэта асаблівы тып workers, які дзейнічае як проксі-сервер паміж вэб-аплікацыяй, браўзэрам і сеткай. Яны могуць выкарыстоўвацца для кэшавання рэсурсаў для працы ў афлайн-рэжыме, фонавай сінхранізацыі даных і push-паведамленняў. Service Workers выконваюць ключавую ролю ў стварэнні прагрэсіўных вэб-прыкладанняў (PWA).

Падрабязны адказ

Worker - гэта асобная плынь (не працэс) на узроўні аперацыйнай сістэмы. Web Workers cтвараюцца з дапамогай класа Worker.

Усе 3 віды воркераў наследуюцца ад абстрактнага класа AbstractWorker. Гэта важна, бо існуе шмат блытаніны для гэтага адказу ў розных крыніцах.

Вось некалькі прыкладаў выкарыстоўвання воркераў:

  • выкананне задач з інтэнсіўнай нагрузкай працэсара
  • апытанне URL-адрасоў у фонавым рэжыме
  • у онлайн-рэдактарах кода для падсвятлення сінтаксісу
  • праверка правапісання
  • рэндэрынг 3-мерных сцэн візуалізацыі
  • шыфраваннне
  • папярэдняя загрузка даных

Dedicated workers маюць cross-origin-абмежаванні, Shared Workers могуць пераадольваць іх.

  1. 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");
  1. Shared Workers

Shared Workers даступныя з некалькіх скрыптаў, нават калі яны запушчаныя на розных укладках, iframe ці вокнах. Для зносін з Shared Worker адчыняецца порт, які скрыпты могуць выкарыстоўваць для сувязі з воркерам (гэта робіцца няяўна).

Ва ўсім астатнім яны падобныя на Deducated Workers.

Для стварэння воркера выкарыстоўваецца канструктар SharedWorker:

const myWorker = new SharedWorker("worker.js");
  1. 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.

loveJS, 2024-02-24
Каментары

    (Каб даслаць каментар залагуйцеся ў свой уліковы запіс)

    ;