]> git.ardis.lu - ardislu.dev/commitdiff
Simplify cache strategy to cache first
authorArdis Lu <ardisglu@gmail.com>
Sun, 27 Feb 2022 04:33:39 +0000 (20:33 -0800)
committerArdis Lu <ardisglu@gmail.com>
Sun, 27 Feb 2022 04:33:39 +0000 (20:33 -0800)
staleWhileRevalidate produces too much load on origin

sw.js

diff --git a/sw.js b/sw.js
index 64122f38f916471c95d7390350e8e170ac597518..883b337b1fd6e81f5d70372514d60306f0258cdd 100644 (file)
--- a/sw.js
+++ b/sw.js
@@ -1,22 +1,31 @@
-const cacheName = 'v1';
+const cacheName = 'v2';
 
-self.addEventListener('install', event => {
-  event.waitUntil((async () => {
-    const cache = await caches.open(cacheName);
-    await cache.addAll(['index.html', '404.html', 'style.css', 'script.js', 'favicon.ico', 'github.svg', 'home.svg']);
-  })());
-});
+self.addEventListener('install', event => event.waitUntil(
+  caches.open(cacheName).then(cache => cache.addAll(
+    [
+      'index.html',
+      'favicon.ico',
+      'style.css',
+      'print.css',
+      'script.js',
+      'github.svg',
+      'home.svg',
+      'pencil.svg'
+    ]
+  ))
+));
 
-self.addEventListener('fetch', event => {
-  event.respondWith((async () => {
-    const fetchResponseP = fetch(event.request);
-    const fetchResponseCloneP = fetchResponseP.then(r => r.clone());
-
-    event.waitUntil((async () => {
-      const cache = await caches.open(cacheName);
-      await cache.add(event.request.url, await fetchResponseCloneP);
-    })());
-
-    return (await caches.match(event.request.url)) || fetchResponseP;
-  })());
-});
\ No newline at end of file
+self.addEventListener('fetch', event => event.respondWith(
+  caches.match(event.request, { ignoreVary: true }).then(response => {
+    if (response !== undefined) {
+      return response;
+    }
+    else {
+      return fetch(event.request).then(response => {
+        const responseClone = response.clone();
+        caches.open(cacheName).then(cache => cache.put(event.request, responseClone));
+        return response;
+      })
+    }
+  })
+));
This page took 0.03777 seconds and 4 git commands to generate.