I’m trying workbox and service-worker for the first time today.
I’m using the stale-while-revalidate
strategy with the BroadcastUpdatePlugin
.
Everything works:
-
the browser starts a call
-
the Service Worker with Workbox return the cached response and starts a revalidation call
-
if the revalidation response is different I get a message! Great!
What I don’t know is how to receive an event even if there is NO UPDATE from the revalidation call.
This is the code I’m using:
importScripts(
"https://storage.googleapis.com/workbox-cdn/releases/7.1.0/workbox-sw.js"
);
self.skipWaiting();
workbox.core.clientsClaim();
workbox.routing.registerRoute(
({ url }) => url.pathname.startsWith("/images/avatars/"),
new workbox.strategies.StaleWhileRevalidate({
plugins: [new workbox.broadcastUpdate.BroadcastUpdatePlugin()],
})
);
I would like something like this:
workbox.routing.registerRoute(
({ url }) => url.pathname.startsWith("/images/avatars/"),
new workbox.strategies.StaleWhileRevalidate({
plugins: [new workbox.broadcastUpdate.BroadcastUpdatePlugin({
callback: (response) => {
if (response.isNew()) {
const message = {};
sendMessageToClient(message);
}
}
})],
})
);
Is there a way?