En una página web tengo:
let response = await fetch(url, { cache: "no-store"});Luego, en el trabajador de servicio tengo:
function handleFetch(event) { console.log(event.request.cache) // Always prints 'reload', should be 'no-store' } self.addEventListener("fetch", handleFetch); Requiero que la memoria caché se establezca en no-store , no reload , es decir, el valor en el que se configuró. Chrome ignora el valor y siempre lo cambia para reload . ¿Estoy haciendo algo mal o se trata de un caso de Chrome que impone su propio valor?
Además, para probar que el caché se configuró correctamente en la solicitud que probé:
const init = { cache: "no-store"}; let request = new Request(url, init); console.log(request.cache); // Prints 'no-store' let request = new Request(url, init);Creo que se trata de un error de Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=1317680
Supongo que solo usaré un encabezado personalizado o un encabezado de control de caché hasta que se resuelva.
De los documentos de MDN:
no-store : el navegador obtiene el recurso del servidor remoto sin mirar primero en el caché y no actualizará el caché con el recurso descargado.
recargar : el navegador obtiene el recurso del servidor remoto sin mirar primero en el caché, pero luego actualizará el caché con el recurso descargado.
https://developer.mozilla.org/en-US/docs/Web/API/Request/cache
Por lo tanto, parece que Chrome desea almacenar en caché todo internamente, por razones, podría ser una optimización interna, y por eso reemplaza la configuración de su caché con la suya propia, pero respetando sus deseos de tener los "datos más recientes" al cambiarlo. recargar
Entonces obtienes los "datos no almacenados en caché más nuevos", Chrome puede almacenarlos en caché por sí mismo. Lo mejor de ambos mundos.