123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const OFFLINE_VERSION = 1;
- const CACHE_NAME = "offline";
- const OFFLINE_URL = "/offline.html";
- self.addEventListener("install", (event) => {
- event.waitUntil(
- (async () => {
- const cache = await caches.open(CACHE_NAME);
- await cache.add(new Request(OFFLINE_URL, { cache: "reload" }));
- })()
- );
- self.skipWaiting();
- });
- self.addEventListener("activate", (event) => {
- event.waitUntil(
- (async () => {
- if ("navigationPreload" in self.registration) {
- await self.registration.navigationPreload.enable();
- }
- })()
- );
- self.clients.claim();
- });
- self.addEventListener("fetch", (event) => {
- if (event.request.mode === "navigate") {
- event.respondWith(
- (async () => {
- try {
- const preloadResponse = await event.preloadResponse;
- if (preloadResponse) {
- return preloadResponse;
- }
- const networkResponse = await fetch(event.request);
- return networkResponse;
- } catch (error) {
- const cache = await caches.open(CACHE_NAME);
- const cachedResponse = await cache.match(OFFLINE_URL);
- return cachedResponse;
- }
- })()
- );
- }
- });
|