]> git.ardis.lu - ardislu.dev/commitdiff
Match with latest cache instead of all caches
authorArdis Lu <ardisglu@gmail.com>
Fri, 4 Aug 2023 04:04:06 +0000 (21:04 -0700)
committerArdis Lu <ardisglu@gmail.com>
Fri, 4 Aug 2023 04:04:06 +0000 (21:04 -0700)
Fixes endless refresh bug when multiple cache versions exist

sw.js

diff --git a/sw.js b/sw.js
index 87c02cffdf1a4f2982aac5a619722edce661e919..78b73a44687a22f5ee2b0c0925554980c2ca78bd 100644 (file)
--- a/sw.js
+++ b/sw.js
@@ -2,7 +2,7 @@ const cacheName = 'v5';
 const cacheChannel = new BroadcastChannel('cache');
 
 async function revalidate(request) {
-  const cachePromise = caches.match(request);
+  const cachePromise = caches.open(cacheName).then(c => c.match(request));
   const originPromise = fetch(request);
   const [cacheResponse, originResponse] = await Promise.all([cachePromise, originPromise]);
 
@@ -32,7 +32,7 @@ globalThis.addEventListener('fetch', event => {
     return;
   }
 
-  event.respondWith(caches.match(event.request).then(cacheResponse => {
+  event.respondWith(caches.open(cacheName).then(c => c.match(event.request)).then(cacheResponse => {
     const originResponse = revalidate(event.request);
     return cacheResponse === undefined ? originResponse : cacheResponse;
   }));
This page took 0.0404 seconds and 4 git commands to generate.