Web/API/NavigationPreloadManager

From Get docs

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

Methods

NavigationPreloadManager.enable()
Enables navigation preloading and returns a Promise that resolves.
NavigationPreloadManager.disable()
Disables navigation preloading and returns a Promise that resolves.
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 WorkersThe definition of 'NavigationPreloadManager' in that specification. Working Draft Initial definition.

Browser Compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

NavigationPreloadManager

Experimental'

Chrome

Full support 62

Edge

Full support 18

Firefox No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

IE

No support No

Opera

Full support 49

Safari

No support No

WebView Android

Full support 62

Chrome Android

Full support 62

Firefox Android No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

Opera Android

Full support 46

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

disable

Experimental'

Chrome

Full support 62

Edge

Full support 18

Firefox No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

IE

No support No

Opera

Full support 49

Safari

No support No

WebView Android

Full support 62

Chrome Android

Full support 62

Firefox Android No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

Opera Android

Full support 46

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

enable

Experimental'

Chrome

Full support 62

Edge

Full support 18

Firefox No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

IE

No support No

Opera

Full support 49

Safari

No support No

WebView Android

Full support 62

Chrome Android

Full support 62

Firefox Android No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

Opera Android

Full support 46

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

getState

Experimental'

Chrome

Full support 62

Edge

Full support 18

Firefox No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

IE

No support No

Opera

Full support 49

Safari

No support No

WebView Android

Full support 62

Chrome Android

Full support 62

Firefox Android No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

Opera Android

Full support 46

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

setHeaderValue

Experimental'

Chrome

Full support 62

Edge

Full support 18

Firefox No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

IE

No support No

Opera

Full support 49

Safari

No support No

WebView Android

Full support 62

Chrome Android

Full support 62

Firefox Android No support No

Notes'

No support No

Notes'

Notes' Implementation tracked in bug 1290958

Opera Android

Full support 46

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
See implementation notes.'
See implementation notes.