Skip to content

Commit 6800ea5

Browse files
committed
sw: caching logged out files
1 parent b93c6ab commit 6800ea5

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed

web/js/sw.js

+52-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
11
"use strict";
22

3-
var version = 2;
3+
var version = 3;
44
var isOnline = true;
55
var isLoggedIn = false;
6+
var cacheName = `ramblings-${version}`;
7+
8+
var urlsToCache = {
9+
loggedOut: [
10+
"/",
11+
"/about",
12+
"/contact",
13+
"/404",
14+
"/login",
15+
"/offline",
16+
"/css/style.css",
17+
"/js/blog.js",
18+
"/js/home.js",
19+
"/js/login.js",
20+
"/js/add-post.js",
21+
"/images/logo.gif",
22+
"/images/offline.png"
23+
]
24+
};
625

726
self.addEventListener("install",onInstall);
827
self.addEventListener("activate",onActivate);
@@ -15,6 +34,7 @@ main().catch(console.error);
1534

1635
async function main() {
1736
await sendMessage({ statusUpdateRequest: true });
37+
await cacheLoggedOutFiles();
1838
}
1939

2040
function onInstall(evt) {
@@ -27,10 +47,41 @@ function onActivate(evt) {
2747
}
2848

2949
async function handleActivation() {
50+
await cacheLoggedOutFiles(/*forceReload=*/true);
3051
await clients.claim();
3152
console.log(`Service Worker (v${version}) activated`);
3253
}
3354

55+
async function cacheLoggedOutFiles(forceReload = false) {
56+
var cache = await caches.open(cacheName);
57+
58+
return Promise.all(
59+
urlsToCache.loggedOut.map(async function requestFile(url){
60+
try {
61+
let res;
62+
63+
if (!forceReload) {
64+
res = await cache.match(url);
65+
if (res) {
66+
return;
67+
}
68+
}
69+
70+
let fetchOptions = {
71+
method: "GET",
72+
cache: "no-store",
73+
credentials: "omit"
74+
};
75+
res = await fetch(url,fetchOptions);
76+
if (res.ok) {
77+
return cache.put(url,res);
78+
}
79+
}
80+
catch (err) {}
81+
})
82+
);
83+
}
84+
3485
async function sendMessage(msg) {
3586
var allClients = await clients.matchAll({ includeUncontrolled: true, });
3687
return Promise.all(

0 commit comments

Comments
 (0)