Nella mia app Web progressiva, dovrei utilizzare l'API Cache in un addetto al servizio per le mie risorse statiche, o dovrei semplicemente fare affidamento sul controllo cache nativo del browser per questi? Qual è la differenza?Qual è la differenza tra l'utilizzo dell'API Cache di Service Worker e la normale cache del browser?
Qual è la differenza tra l'utilizzo dell'API Cache di Service Worker e la normale cache del browser?
risposta
Uno dei principali vantaggi dell'API cache dei lavoratori del servizio è che offre un controllo più dettagliato rispetto alla cache del browser integrata. Ad esempio, l'addetto all'assistenza può memorizzare nella cache più richieste quando l'utente esegue per la prima volta l'app Web, incluse le risorse che non hanno ancora visitato. Questo velocizzerà le richieste successive. È anche possibile implementare la propria logica di controllo della cache, assicurando che le risorse considerate importanti siano conservate nella cache durante l'eliminazione dei dati meno utilizzati.
La differenza principale è il controllo. La cache del browser è disattivata dalle intestazioni di Cache-Control, il che è buono, fino a quando non lo è. Esistono tutti i tipi di strategie per gestire il modo in cui le risorse indirizzabili alla rete sono memorizzate nella cache; pubblico privato; tempo di vivere, ecc.
Con la memorizzazione nella cache del lavoratore di servizio è possibile controllare a livello di programmazione la permanenza di tali risorse. Ma questo significa che il peso è su di te.
La cache del browser è ciò che considero inaffidabile. Il browser eliminerà automaticamente le risorse in base alla disponibilità di archiviazione del dispositivo. Ad esempio, iPhone ha ignorato la memorizzazione nella cache per qualsiasi risorsa oltre 25kb. Oggi penso che siano solo molto aggressivi.
So che il team di Facebook ha effettuato uno studio qualche anno fa e ha trovato solo il 25% dei file che si aspettavano che i browser memorizzassero nella cache in base alle intestazioni. Ciò significava che vi era un ulteriore traffico di rete e attività del server.
Questo è il motivo per cui la caching del service worker è la scelta migliore. Non andare a rimuovere le intestazioni della cache, ma non appoggiarti a esse.
Un commento che si avvicinava a questo. Se si utilizzano le intestazioni della cache per memorizzare gli elementi in una pagina, un aggiornamento attivato dall'utente farà saltare la cache HTTP. L'evento di recupero SW intercetterà sempre una richiesta, il che significa che puoi sempre servire dalla tua cache se lo desideri. –
@GauntFace In effetti, e non è solo su un "aggiornamento" esplicito di una scheda aperta. Un "aggiornamento" implicito, come caricare la pagina in una nuova scheda, non funzionerà se la pagina è stata memorizzata nella cache con intestazioni e il dispositivo è offline. –