Sto cercando di integrare i lavoratori dei servizi nella mia app, ma ho trovato l'operaio di servizio tenta di recuperare il contenuto della cache anche quando online, ma voglio che preferiscono la rete in queste situazioni. Come posso fare questo? Di seguito è riportato il codice che ho ora, ma non credo che funzioni. Il codice di installazione SW è omesso per brevità.Usa ServiceWorker cache quando collegato
var CACHE_NAME = 'my-cache-v1';
var urlsToCache = [
/* my cached file list */
];
self.addEventListener('install', function(event) {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
/* request is being made */
self.addEventListener('fetch', function(event) {
event.respondWith(
//first try to run the request normally
fetch(event.request).catch(function() {
//catch errors by attempting to match in cache
return caches.match(event.request).then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
});
})
);
});
Questo sembra portare ad avvertimenti come The FetchEvent for "[url]" resulted in a network error response: an object that was not a Response was passed to respondWith().
Sono nuovo di lavoratori dei servizi, in modo da scuse per qualsiasi terminologia sbagliate o cattive pratiche, accoglierebbero eventuali suggerimenti. Grazie!
Gli avvisi si verificano solo mentre si è offline? È possibile che si ottengano richieste di URL imprevisti, come le favicon, che non sono memorizzati nell'evento di installazione della cache. –
Questo è accaduto quando online, quando offline il lavoratore del servizio sembra funzionare come previsto. –
EDIT: Ottengo anche questi errori quando sono offline, ma hai ragione, solo per le risorse che non ho memorizzato nella cache. –