Frequenza di aggiornamento JavaScript del servizio di assistenza (ogni 24 ore?)

Come da questo documento su MDN :

Successivamente viene scaricato ogni 24 ore circa. Può essere scaricato più frequentemente, ma deve essere scaricato ogni 24 ore per impedire che script scadenti siano fastidiosi per troppo tempo.

Lo stesso vale per Firefox e Chrome? O l’aggiornamento al javascript di service worker avviene solo quando l’utente naviga nel sito?

Nota: a partire da Firefox 57 e Chrome 68 , nonché le versioni di Safari e Edge che supportano i lavoratori del servizio, il comportamento predefinito è stato modificato per tenere conto delle specifiche aggiornate del lavoratore di servizio . In quei browser, le direttive della cache HTTP verranno ignorate per impostazione predefinita quando si controlla lo script di worker del servizio per gli aggiornamenti. La descrizione seguente si applica ancora alle versioni precedenti di Chrome e Firefox.

Ogni volta che accedi a una nuova pagina coperta dall’ambito di un operatore del servizio, Chrome invierà una richiesta HTTP standard per la risorsa JavaScript che è stata inoltrata alla chiamata a navigator.serviceWorker.register() . Supponiamo che si chiami service-worker.js . Questa richiesta viene effettuata solo in combinazione con una navigazione o quando un addetto al servizio viene svegliato tramite, ad esempio, un evento push . Non c’è un processo in background che raffigura ogni script di servizio ogni 24 ore, o qualcosa di simile automatizzato.

Questa richiesta HTTP obbedirà alle direttive della cache HTTP standard, con un’eccezione (che è trattata nel paragrafo successivo). Ad esempio, se il server imposta intestazioni di risposta HTTP appropriate che indicano che la risposta memorizzata nella cache deve essere utilizzata per 1 ora, quindi entro la prossima ora, la richiesta del browser per service-worker.js sarà soddisfatta dalla cache del browser. Si noti che non stiamo parlando dell’API di memorizzazione cache , che non è rilevante in questa situazione, ma piuttosto della cache HTTP del browser standard .

L’unica eccezione alle regole di caching HTTP standard, ed è qui che arriva la cosa di 24 ore, è che i browser andranno sempre in rete se l’età della voce service-worker.js nella cache HTTP è maggiore di 24 ore. Quindi, dal punto di vista funzionale, non vi è alcuna differenza nell’uso max-age di 1 giorno o di 1 settimana o di 1 anno: saranno trattati come se l’ max-age fosse di 1 giorno.

I venditori di browser vogliono assicurarsi che gli sviluppatori non service-worker.js accidentalmente un servizio “broken” o bug service-worker.js che viene servito con una max-age di 1 anno, lasciando agli utenti quella che potrebbe essere una persistente e interrotta esperienza web per un lungo periodo di tempo. (Non puoi fare affidamento sui tuoi utenti che sanno di cancellare i loro dati del sito o di spostare-ricaricare il sito.)

Alcuni sviluppatori preferiscono servire esplicitamente il loro service-worker.js con le intestazioni di risposta che causano la distriggerszione di tutte le caching HTTP, il che significa che viene richiesta una rete per service-worker.js per ogni navigazione. Un altro approccio potrebbe essere quello di utilizzare un limite max-age molto piccolo max-age un minuto al minuto – per fornire un certo grado di limitazione nel caso in cui vi sia un numero molto elevato di navigazioni rapide da un singolo utente. Se vuoi davvero minimizzare le richieste e sei sicuro che non aggiornerai il tuo service-worker.js qualsiasi momento, sei libero di impostare un service-worker.js max-age di 24 ore, ma ti consiglio di andare con qualcosa di più breve nel caso in cui tu debba inaspettatamente ridistribuire.