Samme indhold, URL'er og udseende, bygget af en enkelt zola-binær og Tailwind standalone-CLI uden Node. Kanonisk domæne er asger.weirsoe.dk. Blogindlæg ligger som page bundles med frontmatter Zola forstår, så de gamle stempler er ugyldige, indtil scripts/omstempl.py er kørt med PUBLISH_KEY. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
1009 B
JavaScript
25 lines
1009 B
JavaScript
// Håndskrevet service worker: precacher sitet, så det virker offline.
|
|
// postbuild.py sætter version og URL-liste ind. Alt der ikke er precachet, går til netværket.
|
|
const CACHE = 'pw-__VERSION__';
|
|
const URLS = __URLS__;
|
|
const known = new Set(URLS);
|
|
|
|
self.addEventListener('install', (e) => {
|
|
e.waitUntil(caches.open(CACHE).then((c) => c.addAll(URLS)).then(() => self.skipWaiting()));
|
|
});
|
|
|
|
// Rydder forrige version, også de gamle workbox-caches.
|
|
self.addEventListener('activate', (e) => {
|
|
e.waitUntil(caches.keys()
|
|
.then((keys) => Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k))))
|
|
.then(() => self.clients.claim()));
|
|
});
|
|
|
|
self.addEventListener('fetch', (e) => {
|
|
const url = new URL(e.request.url);
|
|
if (e.request.method !== 'GET' || url.origin !== location.origin) return;
|
|
const p = url.pathname;
|
|
const key = [p, p.replace(/\/?$/, '/index.html')].find((k) => known.has(k));
|
|
if (key) e.respondWith(caches.match(key).then((r) => r || fetch(e.request)));
|
|
});
|