Кэш ServiceWorker завершил запрос - PullRequest
0 голосов
/ 22 ноября 2018

Как сделать так, чтобы мой ServiceWorker кэшировал уже выполненные запросы?Я попробовал следующее:

//If any fetch fails, it will look for the request in the cache and serve it from there first
self.addEventListener('fetch', function(event) {
//Trying to answer with "online" version if fails, using cache.
event.respondWith(
    fetch(event.request).then(function (response) {
    //Checking if url is market as noCache
    if(noCache.contains(request) { // <- Pseude code checking wether to cache
        console.log('mtSW: Adding file to cache: '+response.url);
        caches.open(appVersion+'-offline').then(function(cache) {
            cache.put(new Request(response.url), response.clone());
        });
    }
    return(response);
    }).catch(function(error) {
    console.log( 'mtSW: Error fetching. Serving content from cache: ' + error );

    //Check to see if you have it in the cache
    //Return response
    //If not in the cache, then return error page
    return caches.open(appVersion+'-offline').then(function (cache) {
        return cache.match(event.request).then(function (matching) {
        var report =  !matching || matching.status == 404?Promise.reject('no-match'): matching;
        return report
        });
    });
    })
);
})

Строка, содержащая

cache.put(new Request(response.url), response.clone());

, не работает.

Как заставить ServiceWorker кэшировать этот запрос?

...