W3cubDocs

/DOM

NavigationPreloadManager

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

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

Methods

NavigationPreloadManager.enable()
Returns a Promise that resolves when navigation preloading is enabled.
NavigationPreloadManager.disable()
Returns a Promise that resolves when navigation preloading is disabled.
NavigationPreloadManager.setHeaderValue()
Sets the value of the Service-Worker-Navigation-Preload header and returns an empty Promise.
NavigationPreloadManager.getState()
Returns a Promise that resolves to an object with properties indicating whether preload is enabled and the contents of the Service-Worker-Navigation-Preload.

Examples

Feature Detecting and Enabling Navigation Preloading

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

Using a Preloaded Response

The following example shows the implementation of a fetch event that uses a preloaded response.

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);
  }());
});

Specifications

Specification Status Comment
Service Workers
The definition of 'NavigationPreloadManager' in that specification.
Working Draft Initial definition.

Browser CompatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support 62 ? No
No
Implementation tracked in bug 1290958
? 49 ?
enable 62 ? No
No
Implementation tracked in bug 1290958
? 49 ?
disable 62 ? No
No
Implementation tracked in bug 1290958
? 49 ?
setHeaderValue 62 ? No
No
Implementation tracked in bug 1290958
? 49 ?
getState 62 ? No
No
Implementation tracked in bug 1290958
? 49 ?
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support 62 62 ? No
No
Implementation tracked in bug 1290958
49 ? No
enable 62 62 ? No
No
Implementation tracked in bug 1290958
49 ? No
disable 62 62 ? No
No
Implementation tracked in bug 1290958
49 ? No
setHeaderValue 62 62 ? No
No
Implementation tracked in bug 1290958
49 ? No
getState 62 62 ? No
No
Implementation tracked in bug 1290958
49 ? No

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/NavigationPreloadManager