Registrare un Service Worker dall’HTML
Registrare un service worker con un tag script e l’API navigator
Registrare un Service Worker dall’HTML è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Che cos'è un service worker
Un service worker è un file JavaScript eseguito in background, separato da qualsiasi pagina, che intercetta le richieste di rete per il proprio ambito. Abilita il supporto offline, le notifiche push, la sincronizzazione in background e caricamenti ripetuti più rapidi tramite la memorizzazione nella cache.
Registrazione
Registri il worker dallo script della pagina: navigator.serviceWorker.register("/sw.js"). Il browser recupera /sw.js, lo analizza, esegue il relativo evento install e inizia a intercettare le richieste per l'ambito della registrazione.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Rilevare prima il supporto
I browser meno recenti non supportano i service worker. Verifichi sempre la disponibilità della funzionalità con "serviceWorker" in navigator prima di chiamare register; in caso contrario la chiamata genera un'eccezione nei browser che non dispongono dell'API. Il polyfilling non è praticabile: i service worker non possono essere riprodotti tramite polyfill perché richiedono l'integrazione a livello di browser.
Ambito
L'ambito è il prefisso del percorso controllato dal worker. Per impostazione predefinita, l'ambito corrisponde alla directory del file del worker: /sw.js controlla tutti gli URL sotto /. Per registrare un worker con un ambito più profondo da una posizione diversa, imposti l'opzione scope e fornisca anche l'header Service-Worker-Allowed.
Dove posizionare sw.js
Posizioni sw.js nella radice dell'applicazione (/sw.js), così il suo ambito predefinito copre l'intero sito. I percorsi più profondi, come /app/sw.js, limitano l'ambito a /app/ e alle relative sottocartelle, cosa che raramente è desiderabile.
Momento della registrazione
Registri il worker dopo il caricamento della pagina, per evitare di competere per la larghezza di banda durante il rendering critico: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). Le funzionalità PWA diventano operative nelle visite successive senza ritardare la prima visita.
Aggiornamenti
Il browser controlla automaticamente se sw.js è stato aggiornato, in genere ogni 24 ore e durante la maggior parte dei caricamenti di pagina. Se il contenuto del file è cambiato, il nuovo worker viene scaricato, installato e rimane nello stato "waiting" finché tutte le schede esistenti non vengono chiuse; quindi si attiva.
Forzare gli aggiornamenti
registration.update() avvia manualmente un controllo degli aggiornamenti. self.skipWaiting() all'interno del nuovo sw.js lo attiva immediatamente senza attendere la chiusura delle schede. Combini i due approcci per ottenere un comportamento che utilizza sempre il worker più recente, accettando però nuovi recuperi di dati durante la sessione.
Rimuovere la registrazione
registration.unregister() rimuove il worker. È utile durante lo sviluppo se un worker difettoso causa problemi al sito. In Chrome DevTools, Application → Service Workers offre un pulsante "Unregister" per lo stesso scopo durante il debug.
Errore comune
La registrazione di un worker tramite HTTP, senza HTTPS, non va a buon fine senza segnalazioni: i service worker richiedono un'origine sicura, cioè HTTPS o localhost durante lo sviluppo. Se la registrazione non ha effetto, controlli nella console il messaggio "An SSL certificate error occurred".
Coordinare worker e pagina
Il worker non ha accesso al DOM. Per passare messaggi, utilizzi navigator.serviceWorker.controller.postMessage() nella pagina e self.addEventListener("message", handler) nel worker, e viceversa. È utile per l'invalidazione della cache, i controlli della versione e gli eventi personalizzati.
Prima visita e visite successive
Durante la prima visita, il worker viene installato e inizia a controllare le pagine solo dopo il ricaricamento della pagina. Per controllare immediatamente la prima navigazione, chiami self.clients.claim() nell'evento activate: è utile per le app offline-first.
Verifica delle conoscenze
Perché i service worker devono essere forniti tramite HTTPS o localhost?
Riepilogo
Registri i service worker dal JavaScript della pagina con navigator.serviceWorker.register("/sw.js") dopo aver rilevato il supporto. Posizioni sw.js nella radice dell'applicazione per ottenere l'ambito completo. Effettui la registrazione al caricamento per evitare di competere con il rendering critico. Gli aggiornamenti vengono controllati automaticamente a intervalli regolari; per forzarli utilizzi registration.update o skipWaiting. HTTPS è necessario per impedire l'iniezione di worker dannosi.
Domande Frequenti
La lezione «Registrare un Service Worker dall’HTML» è gratuita?
Sì — il testo completo di «Registrare un Service Worker dall’HTML» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Registrare un Service Worker dall’HTML»?
Registrare un service worker con un tag script e l’API navigator Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Registrare un Service Worker dall’HTML»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il Web App Manifest
- Registrare un Service Worker dall’HTML
- Colore del tema e icone dell’app
- Pagina alternativa offline