Service worker
En service worker är en JavaScript-fil som webbläsaren installerar bredvid en webbplats och kör skilt från sidan, där den kan fånga upp nätverksanrop och besvara dem från en lokal cache. Det är den som gör att en webbapp laddar offline, och den börjar gälla först efter ett första besök med uppkoppling.
En proxy som bor i webbläsaren
En service worker registreras av sidan och körs sedan i en egen tråd, utan åtkomst till DOM:en. Huvuduppgiften är fetch-händelsen: varje anrop sidan gör passerar först genom den, och workern avgör om svaret ska komma från cachen, från nätet eller från båda.
Det valet är cachestrategin, och det finns bara några få vanliga:
- Cache först – servera den sparade kopian direkt och gå till nätet bara om inget finns sparat. Snabbt och offlinesäkert, men kan servera en gammal sida.
- Nät först – försök med nätet och fall tillbaka på cachen när det misslyckas. Färskt online, användbart ändå offline.
- Stale-while-revalidate – servera den cachade kopian direkt och uppdatera den tyst i bakgrunden. Standardvalet för stilmallar, typsnitt och ikoner.
- Aldrig cache – skicka rakt ut på nätet. Rätt svar för allt levande: databasläsningar, skrivningar, inloggning, betalningar.
En publicerad NorthernGo-app serveras en /sw.js som följer precis den uppdelningen och medvetet håller varje databas- och inloggningsanrop utanför cachen, så att appen misslyckas ärligt i stället för att visa gammal data.
Missuppfattningen: den gör ingenting vid första besöket
En service worker kan inte cacha filer den aldrig har sett. Den allra första laddningen måste ske med uppkoppling – det är det anropet som installerar workern och fyller cachen. En användare som öppnar din app första gången i flygplansläge får ingenting, hur bra cachestrategin än är.
Två saker till brukar överraska. En ny service worker installeras men blir liggande i waiting tills alla flikar med den gamla har stängts, så en driftsättning når inte nödvändigtvis användarna vid nästa omladdning om inte workern anropar skipWaiting. Och en worker styr bara det scope den serverades från: en fil i webbplatsens rot styr hela ursprunget, en fil i en undermapp styr bara den mappen. Två workers kan inte äga samma scope – den som registrerades sist tar över.
Vanliga frågor
Varför uppdateras inte min service worker när jag publicerar?
En ny version installeras i bakgrunden men blir kvar i väntläge tills alla flikar som styrs av den gamla workern har stängts – en omladdning räcker inte, eftersom den gamla fliken aldrig försvinner helt. Anrop till skipWaiting i install-hanteraren, eller att stänga alla flikar, aktiverar den nya versionen.
Bygg det själv
NorthernGo förvandlar en beskrivning i ren text till en fungerande webbapp med databas, inloggning och en live-adress. Lokal AI-generering körs på ditt eget grafikkort, är obegränsad och ingår gratis i alla prisplaner.