The parameter passed into an install event handler function, the InstallEvent interface represents an install action that is dispatched on the ServiceWorkerGlobalScope of a ServiceWorker. As a child of ExtendableEvent, it ensures that functional events such as FetchEvent are not dispatched during installation.
The code snippet also shows a best practice for versioning caches used by the service worker. Although this example has only one cache, you can use this approach for multiple caches. The code maps a shorthand identifier for a cache to a specific, versioned cache name.
Note: Logging statements are visible in Google Chrome via the "Inspect" interface for the relevant service worker accessed via chrome://serviceworker-internals.
js
constCACHE_VERSION=1;constCURRENT_CACHES={prefetch:`prefetch-cache-v${CACHE_VERSION}`,};
self.addEventListener("install",(event)=>{const urlsToPrefetch =["./static/pre_fetched.txt","./static/pre_fetched.html","https://www.chromium.org/_/rsrc/1302286216006/config/customLogo.gif",];
console.log("Handling install event. Resources to pre-fetch:",
urlsToPrefetch,);
event.waitUntil(
caches
.open(CURRENT_CACHES["prefetch"]).then((cache)=>{return cache
.addAll(
urlsToPrefetch.map((urlToPrefetch)=>{returnnewRequest(urlToPrefetch,{mode:"no-cors"});}),).then(()=>{
console.log("All resources have been fetched and cached.");});}).catch((error)=>{
console.error("Pre-fetching failed:", error);}),);});