Сервисный работник становится лишним после получения HTML-файла - PullRequest
0 голосов
/ 01 марта 2019

В последнее время я работаю с сервисными работниками, это отлично работает, но в настоящее время у меня возникают проблемы в EDGE с кэшированием .html файлов.Я использую свой собственный генератор, который генерирует массив со всеми файлами + их хэш в зависимости от размера файла.SW становится избыточным при установке файла .html.

Chrome, Firefox, Opera работает нормально.

Массив

var staticFiles = [["403.html","2cee1d060036c8da1e82669fe804aa70"],["404.html","2b4f197580132e3390828216428067ef"],["500.html","78e03a6569e35d5e95bea32b60633377"],["503.html","5e48c5ef9491db7443fad25c93be7894"],["application-settings.html","ebab51df91d97105baef9bd1f4d0c0ec"],["css/codemirror.css","df79083f846727a06e323db92e407504"]];

Событие установки

self.addEventListener("install", (event) => {
    event.waitUntil(
        caches.open(staticCacheName).then( (cache) => {
            return setCachedURL(cache).then(function(cachedUrls) {
                return Promise.all(
                    Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
                        if (!cachedUrls.has(cacheKey))
                        {
                            let request = new Request(cacheKey, {credentials: 'same-origin'});
                            return fetch(request).then(function(response) {
                                if (!response.ok) 
                                {
                                    console.log('Request for ' + cacheKey + ' returned a ' + 'response with status ' + response.status);
                                } else {
                                    return cleanResponse(response).then(function(responseToCache) {
                                        return cache.put(cacheKey, responseToCache);
                                    });
                                }
                            });
                        }
                    })
                );
            });
        }).then( () => {
            return self.skipWaiting();
        })
    );
});

Если этого кода недостаточно, я использую слегка отредактированный шаблон от Google, где я только что добавил поддержку динамических файлов.

...