-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathstaticFetch.js
More file actions
34 lines (33 loc) · 1.13 KB
/
staticFetch.js
File metadata and controls
34 lines (33 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function staticStrategy(event) {
event.waitUntil(
(async function () {
if (event.request.method !== 'GET') return
const url = new URL(event.request.url)
for (const matcher of self.context.worker.staleWhileRevalidate) {
if (match(matcher, url)) {
return event.respondWith(staleWhileRevalidate(event))
}
}
for (const matcher of self.context.worker.cacheFirst) {
if (match(matcher, url)) {
return event.respondWith(cacheFirst(event))
}
}
if (url.origin !== location.origin) return
if (url.pathname.indexOf('/nullstack/') > -1) {
return event.respondWith(networkFirst(event))
}
if (url.searchParams?.get('fingerprint') === self.context.environment.key) {
return event.respondWith(cacheFirst(event))
}
if (url.pathname.indexOf('.') > -1) {
return event.respondWith(staleWhileRevalidate(event))
}
if (url.pathname === '/') {
return event.respondWith(networkFirst(event))
}
event.respondWith(networkDataFirst(event))
})(),
)
}
self.addEventListener('fetch', staticStrategy)