node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »


ServiceWorker CacheQueryOptions polyfill



npm install -i sw-cache-options


  • Copy dist/sw-cache-options.js into your project
  • Load it inside ServiceWorker by importScripts('sw-cache-options.js')


This is a polyfill for CacheQueryOptions of ServiceWorker. At a momemnt, Chrome (and its family) doesn't support it natively, so polyfill required. Chrome is sniffed by user agent, exactly this way:

const isChrome = navigator.userAgent.indexOf('Chrome/') !== -1
  • ignoreSearch is implemented for all methods which accepts it.
  • ignoreMethod is implemented for all methods which accepts it.
  • ignoreVary is not implemented. Reason is that it requires getting all responses (Cache#matchAll()), which might not be so bad, I do not want to deal with it a moment. Feel free to make a PR for it.

Browsers which support CacheQueryOptions nativily: Firefox.


Open in target browser and open DevTools console, tests' resulsts are logged into it.

Tests can be run againt any browser with ServiceWorker support, since they check general support of CacheQueryOptions. However, polyfill is applied only in Chrome-family browsers, so for actuall results test there. To test in other browser:

  • Clone repository
  • Go to src/index.js and comment the line if (!isChrome) return;
  • Then run in command line gulp build
  • And startup server in repo directory, like this http-server -p 7777 -c-1
  • Open localhost:7777/tests/index.html and open DevTools console to see results