uzumeti
@uzumeti

Почему не работает управление кэшем Service Worker?

Добрый день!

Помогите пожалуйста понять проблему. Делаю PWA для сайта. Создал по инструкции файлик sw.js и подключаемый swtoolbox.ru. Сервис определяется Хромом как валидный.

В инструкции приведен такой пример sw.js. Поскольку не могу сейчас полностью понять политику работы SW с кэшем и правильно её настроить, хочу просто исключить из кэша ненужные файлы. Мне не нужно, чтобы файлик style.css хранился в кэше и хочется каждый раз его грузить.

Пишем toolbox.precache([
'/index.php',
'/templates/new/css/0jquery-ui.css',
'/templates/new/css/1bootstrap.css',
]);

но style всё равно железно сидит в кэше и не обновляется

'use strict';
importScripts('/sw-toolbox.js');
toolbox.precache([
'/index.php',
'/templates/new/css/0jquery-ui.css',
'/templates/new/css/1bootstrap.css',
]);
toolbox.router.get('/templates/new/images/*', toolbox.cacheFirst);
toolbox.router.get('/*', toolbox.networkFirst, { networkTimeoutSeconds: 5 });


Помогите пожалуйста разобраться как решить эту задачу. Может быть я что-то неправильно понимаю?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вот немного модифицированный пример с сайта google
var CACHE_VERSION = "v1";
var CACHE_NAME = CACHE_VERSION + ":sw-cache-";
var filesToCache = [
  '/index.php',
  '/templates/new/css/0jquery-ui.css',
  '/templates/new/css/1bootstrap.css'
];

self.addEventListener('install', function(e) {
  console.log('[ServiceWorker] Install');
  e.waitUntil(
    caches.open(CACHE_NAME).then(function(cache) {
      console.log('[ServiceWorker] Caching app shell');
      return cache.addAll(filesToCache);
    })
  );
});
self.addEventListener('activate', function(e) {
  console.log('[ServiceWorker] Activate');
  e.waitUntil(
    caches.keys().then(function(keyList) {
      return Promise.all(keyList.map(function(key) {
        if (key !== CACHE_NAME) {
          console.log('[ServiceWorker] Removing old cache', key);
          return caches.delete(key);
        }
      }));
    })
  );
  return self.clients.claim();
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы