Web Developmentexpert

Čo je Service Worker?

Service Worker je JavaScript skript, ktorý beží na pozadí prehliadača nezávisle od webovej stránky. Funguje ako proxy medzi prehliadačom a sieťou — dokáže zachytávať sieťové požiadavky, cachovať zdroje a umožniť offline fungovanie webu. Je kľúčovou technológiou pre Progressive Web Apps (PWA).

Definícia Service Worker

Čo je Service Worker

Service Worker je typ Web Workera, ktorý funguje ako programovateľná sieťová proxy. Beží v samostatnom vlákne oddelenom od hlavnej stránky, nemá prístup k DOM a komunikuje so stránkou cez postMessage API. Je základom technológie Progressive Web Apps (PWA).

Čo Service Worker dokáže

  • Offline podpora — cachovanie stránok a zdrojov umožňuje fungovanie webu bez internetového pripojenia
  • Zachytávanie požiadaviek — Service Worker môže modifikovať, presmerovať alebo odpovedať na sieťové požiadavky
  • Push notifikácie — prijímanie push správ aj keď je stránka zatvorená
  • Background sync — odloženie akcie (napr. odoslanie formulára) na čas, keď bude pripojenie dostupné

Životný cyklus Service Workera

  • Registrácia — stránka zaregistruje Service Worker skript cez navigator.serviceWorker.register()
  • Inštalácia — prehliadač stiahne a nainštaluje skript, event install umožňuje vopred nachovať zdroje
  • Aktivácia — nový Service Worker prevezme kontrolu, event activate slúži na vyčistenie starých cacheov
  • Fetch — aktívny Service Worker zachytáva sieťové požiadavky cez event fetch

Service Worker vyžaduje HTTPS (okrem localhost pre vývoj) z bezpečnostných dôvodov.

Praktický príklad

Príklad: Informačný portál chce fungovať aj offline pre čitateľov v oblastiach so slabým signálom.

Service Worker pri prvej návšteve uloží do Cache API základné stránky (domovskú stránku, 10 najnovších článkov, CSS a JavaScript). Keď používateľ stratí pripojenie, Service Worker zachytí požiadavky a odpovie s cachenovanými verziami. Pre nenavštívené stránky zobrazí vlastnú offline stránku s informáciou o nedostupnosti pripojenia.

Často kladené otázky

Čo je Service Worker?

Service Worker je JavaScript skript bežiaci na pozadí prehliadača, ktorý zachytáva sieťové požiadavky a umožňuje offline fungovanie webu, push notifikácie a inteligentné cachovanie. Je základom Progressive Web Apps.

Aký je rozdiel medzi Service Worker a Web Worker?

Web Worker vykonáva výpočtovo náročné operácie v pozadí a existuje len kým je stránka otvorená. Service Worker funguje ako sieťová proxy, beží aj po zatvorení stránky a má prístup k Cache API a Push API.

Prečo Service Worker vyžaduje HTTPS?

Service Worker dokáže zachytávať a modifikovať sieťové požiadavky. Na nezabezpečenom HTTP pripojení by útočník mohol podvrhnúť škodlivý Service Worker a manipulovať s celou komunikáciou používateľa.

Podporujú Service Worker všetky prehliadače?

Áno, všetky moderné prehliadače vrátane Chrome, Firefox, Edge a Safari plne podporujú Service Worker API. Pokrytie presahuje 97 % celosvetových používateľov.

Súvisiace pojmy

Web Worker

Web Worker je mechanizmus prehliadača, ktorý umožňuje spúšťať JavaScript v samostatnom vlákne oddelenom od hlavného vlákna stránky. Výpočtovo náročné operácie tak neblokujú užívateľské rozhranie a stránka zostáva plynulá. Komunikácia s hlavným vláknom prebieha cez postMessage API.

Caching

Caching je technika ukladania kópií dát alebo zdrojov na miesto, odkiaľ sa dajú rýchlejšie získať pri opakovanom prístupe. Na webe sa cachujú HTML stránky, obrázky, skripty a API odpovede na úrovni prehliadača, CDN alebo servera. Výrazne znižuje dobu načítania a zaťaženie servera.

Prefetching

Prefetching je technika, ktorá prehliadaču naznačuje, aby na pozadí stiahol zdroje, ktoré bude používateľ pravdepodobne potrebovať v budúcnosti — typicky na ďalšej stránke. Má nízku prioritu a nezdržiava načítanie aktuálnej stránky. Používa sa element <link rel="prefetch">.

Preloading

Preloading je technika, ktorá prehliadaču nariaďuje čo najskôr stiahnuť dôležitý zdroj (font, obrázok, skript), ešte pred tým, než ho parsér HTML prirodzene objaví. Používa sa element <link rel="preload"> v hlavičke stránky. Zrýchľuje vykreslenie kritických zdrojov.

Lazy Loading

Lazy loading je technika odloženého načítavania zdrojov, pri ktorej sa obrázky, videá alebo časti kódu načítajú až vtedy, keď ich používateľ skutočne potrebuje. Znižuje počiatočný objem dát a výrazne zrýchľuje prvé vykreslenie stránky. Prehliadače dnes podporujú natívny lazy loading cez atribút loading="lazy".

Potrebujete pomôcť s webom?

Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.