workbox-strategies#StrategyHandler JavaScript Examples
The following examples show how to use
workbox-strategies#StrategyHandler.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: sw-template.js From Pf2eTools with MIT License | 6 votes |
/**
* @param {Request} request
* @param {StrategyHandler} handler
* @returns {Promise<Response | undefined>}
*/
async _handle (request, handler) {
/** the full url of the request, https://example.com/slug/ */
const url = request.url;
/**
* the route of the url, with a query string for the revision
*
* this way, we can invalidate the cache entry if the revision is wrong
*/
const cacheKey = createCacheKey({url, revision: runtimeManifest.get(url)}).cacheKey;
console.log(`trying to resolve ${url} with key ${cacheKey}`);
const cacheResponse = await handler.cacheMatch(cacheKey);
// undefined is returned if we don't have a cache response for the key
if (cacheResponse !== undefined) return cacheResponse;
// we need to fetch the request from the network and store it with revision for next time
console.log(`fetching ${url} over the network for RevisionFirstCache`);
try {
const fetchResponse = await handler.fetch(request);
// no await because it can happen later
handler.cachePut(cacheKey, fetchResponse.clone());
return fetchResponse;
} catch (e) {
// no await because it can happen later
offlineAlert(url);
// empty response, we cant get the file
return new Response();
}
}