javascript - pagina - borrar memoria cache pc
¿Cómo borrar el caché del trabajador del servicio? (3)
Por lo tanto, tengo una página HTML con el trabajador del servicio, el caché del trabajador del servicio index.html y mis archivos JS.
El problema es que cuando cambio el JS, el cambio no aparece directamente en el navegador del cliente. Por supuesto, en las herramientas de desarrollo de Chrome, puedo deshabilitar el caché. Pero en chrome mobile, ¿cómo hago eso?
Intenté acceder a la configuración del sitio y presioné el botón CLEAR% RESET. Pero todavía carga la página / carga anterior del caché. Intenté usar otro navegador o Chrome de incógnito y carga la nueva página.
Luego, trato de borrar mis datos de navegación (solo caché) y funciona.
Supongo que no es así como debería funcionar, ¿verdad? mi usuario no sabrá si la página se actualiza sin borrar la memoria caché del navegador Chrome.
Por lo general, actualiza el CACHE_NAME
en el archivo JS de sus trabajadores de servicio para que su trabajador vuelva a instalar:
self.addEventListener(''install'', evt => {
evt.waitUntil(
caches.open(CACHE_NAME).then(cache =>
cache.addAll(inputs))
)
})
Alternativamente, para borrar el caché de un PWA:
self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) })
para listar los nombres de las claves de caché, luego ejecute:
self.caches.delete(''my-site-cache'')
para eliminar una clave de caché por nombre (es decir, my-site-cache). A continuación, actualice la página.
Si ve algún error relacionado con el trabajador en la consola después de la actualización, es posible que también deba anular el registro de los trabajadores registrados:
navigator.serviceWorker.getRegistrations()
.then(registrations => {
registrations.forEach(registration => {
registration.unregister()
})
})
No estoy convencido de que nada de esto llegará a las especificaciones.
Si conoce el nombre del caché, simplemente puede llamar a caches.delete()
desde cualquier lugar que desee en el trabajador:
caches.delete(/*name*/);
Y si desea borrar todos los cachés (y no esperarlos, digamos que es una tarea en segundo plano) solo necesita agregar esto :
caches.keys().then(function(names) {
for (let name of names)
caches.delete(name);
});
Utilice esto para eliminar cachés obsoletos:
self.addEventListener(''activate'', function(event) {
event.waitUntil(
caches.keys().then(function(cacheNames) {
return Promise.all(
cacheNames.filter(function(cacheName) {
// Return true if you want to remove this cache,
// but remember that caches are shared across
// the whole origin
}).map(function(cacheName) {
return caches.delete(cacheName);
})
);
})
);
});