BroadcastCacheUpdate
First added
Workbox
About
A class that uses the postMessage() API to inform any open windows/tabs when a cached response has been updated.
For efficiency’s sake, the underlying response bodies are not compared; only specific response headers are checked.
Options
headersToCheck— A list of headers that will be used to determine whether the responses differ.generatePayload(options)— A function whose return value will be used as thepayloadfield in any cache update messages sent to the window clients.notifyAllClients— Iftrue(the default) then all open clients will receive a message. Iffalse, then only the client that make the original request will be notified of the update.
Methods and fields
async notifyIfUpdated(options)— Compares two responses and sends a message (viapostMessage()) to all window clients if the responses differ. Neither of the responses can be opaque.
Usage
import { BroadcastCacheUpdate, BROADCAST_UPDATE_DEFAULT_HEADERS } from "serwist";
const broadcastUpdate = new BroadcastCacheUpdate({
headersToCheck: [...BROADCAST_UPDATE_DEFAULT_HEADERS, "X-My-Custom-Header"],
});
const cacheName = "api-cache";
const request = new Request("https://example.com/api");
const cache = await caches.open(cacheName);
const oldResponse = await cache.match(request);
const newResponse = await fetch(request);
broadcastUpdate.notifyIfUpdated({
cacheName,
oldResponse,
newResponse,
request,
event,
});