2 changed files with 60 additions and 3 deletions
@ -0,0 +1,50 @@ |
|||||
|
async function initCache() { |
||||
|
const cache = await caches.open('v1') |
||||
|
await cache.addAll([ |
||||
|
'/', |
||||
|
'/index.html', |
||||
|
'/app.js', |
||||
|
'/components/page.js', |
||||
|
'/components/layout.js', |
||||
|
'/components/header.js', |
||||
|
'/components/nav-menu.js', |
||||
|
'/components/dialog.js', |
||||
|
'/forms/button-group.js', |
||||
|
'/menu/dropdown.js', |
||||
|
]) //2
|
||||
|
} |
||||
|
|
||||
|
self.addEventListener("install", event => { |
||||
|
self.skipWaiting() |
||||
|
event.waitUntil(initCache()) |
||||
|
}) |
||||
|
|
||||
|
async function cacheFirst(request) { |
||||
|
if (request.url.includes('/-/frame')) { |
||||
|
const url = new URL(request.url) |
||||
|
if (url.pathname === '/-/frame') { |
||||
|
const html = url.searchParams.get('html') |
||||
|
const csp = url.searchParams.get('csp') |
||||
|
return new Response(html, { |
||||
|
headers: { |
||||
|
'Content-Type': 'text/html', |
||||
|
'Content-Security-Policy': csp, |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
const resp = await caches.match(request) |
||||
|
if (resp) { |
||||
|
return resp |
||||
|
} else { |
||||
|
return fetch(request) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
self.addEventListener('fetch', event => { |
||||
|
event.respondWith(cacheFirst(event.request)) |
||||
|
}) |
||||
|
|
||||
|
self.addEventListener('activate', event => { |
||||
|
event.waitUntil(clients.claim()) |
||||
|
}) |
||||
Loading…
Reference in new issue