Что происходит, так это то, что при первой загрузке веб-сайта выборка и кэширование не вызывают никаких проблем. Но при обновлении (обычной перезагрузке) событие Fetch обнаруживает проблему и показывает это в журнале консоли.
Uncaught (в обещании) TypeError: схема запроса «данные» не поддерживается в self.addEventListener.e.respondWith.fetch.then.caches.open.then.cache
Я понял, что при перезагрузке он получает format data:[<mediatype>][;base64],<data>
, что вызывает ошибку в журнале консоли.
// Call Fetch Event
self.addEventListener('fetch', e => {
console.log('Service Worker: Fetching');
e.respondWith(
fetch(e.request)
.then(res => {
// Make copy/clone of response
const resClone = res.clone();
// Open cahce
caches.open(cacheName).then(cache => {
// Add response to cache
cache.put(e.request, resClone);
});
return res;
})
.catch(err => caches.match(e.request).then(res => res))
);
});
Я хочу избежать этой ошибки, но не знаю как.
e.request
является uri данных, то есть в форматеdata:[<mediatype>][;base64],<data>
- person Jaromanda X   schedule 01.10.2018.then(res => res)
, что не нужно и вполне может привести к необработанной ошибке. - person Roamer-1888   schedule 01.10.2018e.respondWith()
иfetch()
наизнанку, чтобы в результатеe.respondWith(res)
заменилиreturn res
внутри обратного вызова.then
. - person Roamer-1888   schedule 01.10.2018fetch
, а кэширование не улучшит скорость или задержку, поэтому просто не делайте этого с URI данных. - person Jaromanda X   schedule 02.10.2018