Service Worker- NavigationPreloadManager

The experimental NavigationPreloadManager interface provides methods for managing the preloading of resources with a service worker.


addEventListener('activate', event => {
   event.waitUntil(async function() {
      if (self.registration.navigationPreload) {
         await self.registration.navigationPreload.enable();
      }
   }());
});

addEventListener('fetch', event => {
   event.respondWith(async function() {             // Respond from the cache if we can
      const cachedResponse = await caches.match(event.request);
      if (cachedResponse) return cachedResponse;    // Else, use the preloaded response, if it's there
      const response = await event.preloadResponse;
      if (response) return response;                // Else try the network.
      return fetch(event.request);
  }());
});