Весь мой веб-сайт составляет ~ 3 МБ (включая изображения), однако, когда я проверяю кэш, используемый для веб-сайта на Chrome Mobile, он показывает, что используется ~ 50 МБ. Я очистил его и сбросил настройки сайта, но это все равно происходит.
Я внедрил работника сервиса, следуя рекомендациям Mozilla для кэша и обновления , и немного его отредактировал.
В основном то, что я (думаю, я) делаю, это:
- установить сервисный работник
- кэширует CACHED_URLS
- Когда есть запрос, он проверяет, кэшируются ли необходимые ресурсы:
- если да, то обслуживает их из кеша
- если нет, то обслуживает их из сети
- Обновляет кеш с данными сети (я знаю, этого не следует делать, если он уже обслуживался из сети на шаге 3.2)
Вот код:
importScripts('/pwa/cache-polyfill.js');
var CACHE = 'my-cache';
var CACHED_URLS = [
'/',
'/index.html',
'/index.html?homescreen=1',
'/?homescreen=1',
'/styles/index.min.css',
'/font/fa.css',
'/img/favicon.png'
];
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE).then(function(cache) {
return cache.addAll(CACHED_URLS);
})
);
});
// Mozilla - Cache and Update
self.addEventListener('fetch', function(evt) {
console.log('The service worker is serving the asset.');
// Cache or Fetch
evt.respondWith(cacheOrFetch(evt.request));
// Update Cache
evt.waitUntil(update(evt.request));
});
function cacheOrFetch(request) {
return caches.match(request).then(function(response) {
return response || fetch(request);
})
}
function update(request) {
return caches.open(CACHE).then(function(cache) {
return fetch(request).then(function(response) {
return cache.put(request, response);
});
});
}
Итак, мой вопрос: почему он хранит 40-50 МБ в кеше, если весь сайт занимает 3 МБ?
Нужно ли очищать старый кеш?