Я надеюсь, что кто-то может помочь мне с этим.
На этапе установки моего сервисного работника я пытаюсь кэшировать 100 файлов, но Firefox кэширует только 50 или 60 из них, разные при каждой установке работник сервиса.
При мониторинге кеширования я не получаю ошибок, но после завершения установки половина файлов просто не находится в кеше. Это с Firefox 75 на MacOS Catalina и Windows 10. Все это прекрасно работает в Safari, Edge, Chrome.
Кэшированные мной тестовые файлы имеют размер 3 КБ каждый и используют «хранилище». и "оценить", я вижу, что есть достаточно свободного места.
Вот мой код работника службы. Я пытался сделать это с помощью cache.addAll и forEach для мониторинга кэширования, но результат тот же: отсутствует около половины файлов.
const CACHE_NAME = 'limit-test-cache-v1';
const urlsToCache = [
'/serviceworker-limit/testdata/testdata1.pdf',
'/serviceworker-limit/testdata/testdata2.pdf',
'/serviceworker-limit/testdata/testdata3.pdf',
'/serviceworker-limit/testdata/testdata4.pdf',
...
'/serviceworker-limit/testdata/testdata97.pdf',
'/serviceworker-limit/testdata/testdata98.pdf',
'/serviceworker-limit/testdata/testdata99.pdf',
'/serviceworker-limit/testdata/testdata100.pdf'
];
const cacheSize = urlsToCache.length;
let counter = 0;
self.addEventListener('install', event => {
event.waitUntil(
/*
caches.open(CACHE_NAME).then(cache => {
cache.addAll(urlsToCache);
})
*/
caches.open(CACHE_NAME).then(cache => {
console.log('Opened cache');
urlsToCache.forEach(url => {
const req = new Request(url);
cache.add(req).then(() => {
counter++;
console.log(url + ' has been cached. Message ' + counter + ' of total: ' + cacheSize);
}).catch(err => {
counter++;
console.log('Error while caching' + url + '. Error ' + err);
});
});
})
);
});
Поскольку ошибок нет, я в принципе не знаю, что искать. Это ожидаемое поведение как-то? Мой код неверен? Это ошибка Firefox? В конце концов, правильные ли заземлители? Если кто-нибудь может дать мне несколько советов, это будет оценено.