-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathdynamicFetch.js
More file actions
31 lines (30 loc) · 1.04 KB
/
dynamicFetch.js
File metadata and controls
31 lines (30 loc) · 1.04 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
function dynamicStrategy(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))
}
event.respondWith(networkFirst(event))
})(),
)
}
self.addEventListener('fetch', dynamicStrategy)