Middle
Co jsou webové pracovníci a k čemu slouží?
sobes.tech AI
Odpověď od AI
Webové pracovníky jsou způsob, jak spouštět skripty na pozadí v samostatných vláknech, oddělených od hlavního vlákna uživatelského rozhraní.
Jejich hlavní účel:
- Zvýšení výkonu: Přesun náročných úkolů (složitých výpočtů, zpracování velkých objemů dat, parsing) z hlavního vlákna, které je zodpovědné za vykreslování rozhraní a zpracování událostí uživatele. To zabraňuje zamrznutí stránky a zlepšuje odezvu aplikace.
- Paralelismus: Umožňuje současné provádění více úkolů, efektivněji využívající vícejádrové procesory.
Existují tři typy webových pracovníků:
- Dedicated Workers: Jsou spojeni s konkrétní stránkou a jsou dostupní pouze pro ni.
- Shared Workers: Mohou být dostupní z více stránek nebo záložek stejné domény.
- Service Workers: Fungují jako proxy sítě, zachycují síťové požadavky a umožňují implementaci offline funkcí, push oznámení a dalších schopností progresivních webových aplikací (PWA).
Principy práce:
- Samostatný kontext: Worker má svůj vlastní globální objekt a přístup k podmnožině API prohlížeče (bez přístupu k DOM,
window,document,parent). - Výměna zpráv: Interakce mezi hlavním vláknem a workerem probíhá prostřednictvím zpráv s
postMessage()a obslužníku událostíonmessage. Data jsou přenášena hodnotou (kopírována) nebo odkazem (Transferable Objects).
Příklad použití Dedicated Worker:
// main.js (hlavní vlákno)
const worker = new Worker('worker.js'); // Vytvoření workeru
worker.onmessage = (event) => {
// Zpracování zprávy od workeru
console.log('Obdrženo od workeru:', event.data);
};
worker.postMessage('Zahájit složitou operaci'); // Odeslání zprávy workeru
// worker.js (soubor workeru)
onmessage = (event) => {
// Zpracování zprávy z hlavního vlákna
console.log('Obdrženo z hlavního vlákna:', event.data);
// Provádění složité úlohy
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Odeslání výsledku zpět
postMessage(result);
};