jekyll build from Action ecf64c679f

This commit is contained in:
2025-03-20 10:46:34 +00:00
parent 24afdc22b7
commit ad0b72a99a
13 changed files with 908 additions and 188 deletions

View File

@@ -1,6 +1,7 @@
const CACHE_NAME = "cyberpunk-cache-v1";
const OFFLINE_URL = "/offline.html"; // Diese Seite wird angezeigt, wenn offline
const BASE_PATH = "/cpred/";
const SITEMAP_URL = BASE_PATH + "sitemap.json";
const urlsToCache = [
BASE_PATH,
@@ -30,7 +31,9 @@ const urlsToCache = [
BASE_PATH + "/assets/game-data/characters/carver.json",
];
// Installations-Event: Dateien werden in den Cache geladen
/**
* Install-Event: Cache Standarddateien
*/
self.addEventListener("install", (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => {
@@ -39,18 +42,45 @@ self.addEventListener("install", (event) => {
);
});
// Fetch-Event: Prüft, ob eine Datei im Cache ist, bevor sie aus dem Netz geladen wird
/**
* Fetch-Event: Cache-First Strategie mit Offline-Fallback
*/
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request).catch(() => {
return caches.match(OFFLINE_URL); // Falls offline, lade offline.html
return caches.match(OFFLINE_URL);
});
})
);
});
// Aktivierungs-Event: Löscht alten Cache, wenn sich Dateien geändert haben
/**
* Wenn die Startseite geladen wird, lade automatisch alle Seiten aus der Sitemap in den Cache
*/
self.addEventListener("sync", (event) => {
if (event.tag === "cache-all-pages") {
event.waitUntil(
fetch(SITEMAP_URL)
.then((response) => response.json())
.then((data) => {
return caches.open(CACHE_NAME).then((cache) => {
return Promise.all(
data.pages.map((page) => {
return fetch(page.url)
.then((response) => cache.put(page.url, response))
.catch((err) => console.error("Fehler beim Cachen:", err));
})
);
});
})
);
}
});
/**
* Aktivierungs-Event: Löscht alten Cache
*/
self.addEventListener("activate", (event) => {
event.waitUntil(
caches.keys().then((cacheNames) => {