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 thepayload
field 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,
});