Skip to content

Commit 45dc416

Browse files
committed
Service worker changes
1 parent 8abb020 commit 45dc416

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

src/service-worker.ts

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import { createHandlerBoundToURL, precacheAndRoute } from 'workbox-precaching'
2-
import { NavigationRoute, registerRoute } from 'workbox-routing'
1+
import { precacheAndRoute } from 'workbox-precaching'
2+
import { NavigationRoute, registerRoute, Route } from 'workbox-routing'
3+
import * as navigationPreload from 'workbox-navigation-preload'
4+
import { NetworkFirst, StaleWhileRevalidate } from 'workbox-strategies'
35
import { clientsClaim } from 'workbox-core'
46

57
declare let self: ServiceWorkerGlobalScope
@@ -13,11 +15,35 @@ self.addEventListener('message', (event) => {
1315

1416
clientsClaim()
1517

16-
// self.__WB_MANIFEST is default injection point
18+
// Precache the manifest
1719
precacheAndRoute(self.__WB_MANIFEST)
1820

19-
// clean old assets
20-
// cleanupOutdatedCaches()
21+
// Enable navigation preload
22+
navigationPreload.enable()
2123

22-
// to allow work offline
23-
registerRoute(new NavigationRoute(createHandlerBoundToURL('index.html')))
24+
// Create a new navigation route that uses the Network-first, falling back to
25+
// cache strategy for navigation requests with its own cache. This route will be
26+
// handled by navigation preload. The NetworkOnly strategy will work as well.
27+
const navigationRoute = new NavigationRoute(
28+
new NetworkFirst({
29+
cacheName: 'navigations',
30+
}),
31+
)
32+
33+
// Register the navigation route
34+
registerRoute(navigationRoute)
35+
36+
// Create a route for image, script, or style requests that use a
37+
// stale-while-revalidate strategy. This route will be unaffected
38+
// by navigation preload.
39+
const staticAssetsRoute = new Route(
40+
({ request }) => {
41+
return ['image', 'script', 'style'].includes(request.destination)
42+
},
43+
new StaleWhileRevalidate({
44+
cacheName: 'static-assets',
45+
}),
46+
)
47+
48+
// Register the route handling static assets
49+
registerRoute(staticAssetsRoute)

0 commit comments

Comments
 (0)