javascript - Är det möjligt för en service worker att permanent bryta en webbplats?


Föreställ dig att du skapar en service worker som implementerar en 'offline först'-strategi (det typiska användningsfallet för service workers), och du distribuerar den till produktion, men den har en bugg. Buggen innebär att den aldrig faktiskt kontrollerar med ursprungsservern för uppdateringar, inte ens för sig själv. Så efter att service workern registrerats för en viss klient vid deras första besök, skulle den klienten aldrig se någon uppdatering av webbplatsen igen (såvida inte användaren manuellt avregistrerar service workern med chrome://serviceworker-internals/ eller liknande). Med andra ord är webbplatsen permanent trasig för de användarna.

Är det ovanstående scenariot möjligt? Om så är fallet, finns det en strategi för att säkerställa att det aldrig händer?

Svar #1


Sammanfattning

Det kommer inte att bli något permanent fel, du kan alltid uppdatera din service worker och fixa cacheproblemet du har orsakat.

Men det kommer att finnas chanser att något aldrig blir uppdaterat om du glömmer att uppdatera din cache och använda den korrekt. (angående den första punkten, du kan alltid fixa detta, ingen permanent skada)


LÅNGt svar

Så vitt jag vet finns det vissa dåliga scenarier när du förlitar dig för mycket på att använda cache, MEN det beror på strategin, det är inte troligt att det händer på "offline först"-strategin men på de andra.

Som om du har förhandskunskap om Service Worker, kommer du att veta att vi kan göra någon form av nätverksbalansering för vissa förfrågningar från webbläsaren. Kort sagt kan vi göra något som:

Offline först

Online först

Snabbast

Endast online

Endast offline

osv.. (namnen är endast för illustrationer)

Och om du går med något som Endast offline för vissa filer/platser, kan det sluta med att dessa platser/filer aldrig uppdateras.

Så svaret är: det finns alltid en chans att något gick fel, men för det du oroar dig för händer det troligen inte alltid. Om du vill förhindra det se till att alltid uppdatera cacheinnehållet för Offline först när det är tillgängligt


För att lägga till svaret från @anshulix är jag inte säker på om det beteendet kom från en gammal service worker. Men för mitt senaste experiment, oavsett vad du gör, om service workern EN GÅNG HAR INSTALLERATS, kommer den alltid att försöka uppdatera sig SJÄLV EN GÅNG varje gång du laddar sidan.

Med detta kan du alltid rätta dina misstag omedelbart och slutanvändaren kommer att få rättelsen efter första sidan laddats eller andra sidan laddats.

Svar #2

haha, nej, det händer inte på det sättet, service-worker-filen har en periodisk uppdatering på 24 timmar, även om den första service-workern var buggy, skulle den alltid kolla på servern om det finns några ändringar och uppdateringar.

mdn