Workbox Service Worker не сохраняет кеш

Реализую Service Worker. У меня неплохо выглядит, активируется без ошибок, ...

Но я чего-то там не вижу:

sw.min.js:

workbox.routing.registerRoute(
          ({request}) => request.destination === 'style',
          new workbox.strategies.NetworkFirst({
           // cacheName: cacheNamecss,
            plugins: [
              new workbox.expiration.ExpirationPlugin({
                maxEntries: 20,
                maxAgeSeconds: 7 * 24 * 60 * 60
              }),
              new workbox.cacheableResponse.CacheableResponsePlugin({
                statuses: [0, 200],
                headers: {'X-Is-Cacheable': 'yes'}
              })
            ]
          }));

Это в Google Chrome's Application -> Service Workers

1 ответ

Попробуйте этот код в своем сервис-воркере:

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.open('mysite-dynamic').then(function(cache) {
      return cache.match(event.request).then(function(response) {
        var fetchPromise = fetch(event.request).then(function(networkResponse) {
          cache.put(event.request, networkResponse.clone());
          return networkResponse;
        })
        return response || fetchPromise;
      })
    })
  );
});

Такой подход называется stale-while-revalidate

https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook

Это означает: если вы извлекаете страницу, служебный работник проверяет, есть ли что-то в кеше, и возвращает его вам из кеша, после возврата из кеша служебный рабочий делает запрос в сеть и сохраняет этот запрос в старый кеш.

При следующем обновлении вы увидите обновленную версию.

При хорошем подходе также: "кэш с откатом в сеть"

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request).then(function(response) {
      return response || fetch(event.request);
    })
  );
});

Это просто означает: загляните в кеш, если что-то хранится, а если нет, то извлеките это из сети.

Другие вопросы по тегам