Какой вариант кеша serviceWorker мы можем использовать на динамически пополняемом сайте joomla? - PullRequest
0 голосов
/ 22 октября 2019

У меня есть сайт на Joomla 3.9+. Я преобразовал свой веб-сайт в приложение pwa и для кеширования контента использую динамический кеш. Это код моего файла sw.js.

const dynamicCacheName = 'site-dynamic-v1';
// activate event
self.addEventListener('activate', evt => {
  evt.waitUntil(
    caches.keys().then(keys => {
      return Promise.all(keys
        .filter(key =>  key !== dynamicCacheName)
        .map(key => caches.delete(key))
      );
    })
  );
});
// fetch event
self.addEventListener('fetch', evt => {
  evt.respondWith(
    caches.match(evt.request).then(cacheRes => {
      return cacheRes || fetch(evt.request).then(fetchRes => {
        return caches.open(dynamicCacheName).then(cache => {
          cache.put(evt.request.url, fetchRes.clone());
          return fetchRes;
        })
      });
    })
  );
});

Этот код кэширует все на лету и добавляет в cacheStorage. Все отлично, аудит LightHouse говорит мне, что у меня есть полное приложение pwa. Но добавляя на сайт новые статьи, которые они не выводят на frontEnd, выводят только то, что было кэшировано serviceWorker, приходится убирать вручную. Как я могу обновить serviceWorker, чтобы при пополнении сайта новый контент сайта выдавался автоматически. Какие стратегии кэширования я могу использовать на сайте? Я не хочу использовать статический кеш, потому что на сайте много скриптов и стилей, а также шрифтов, которые загружаются из разных cdn.

...