How can i update my serviceworker script to update the cached pages when changes are made?

Viewed 32

This is my SW:

IN HTML

    <!--REGISTER SERVICE WORKER-->
    <script>
        if('serviceWorker' in navigator) {
          navigator.serviceWorker
               .register('/app/offline_content/sw.js')
               .then(function() { console.log("Service Worker Registered"); });
        }
    </script>

IN JS

//IMPORT POLYFILL
importScripts('cache-polyfill.js');

//INSTALL
self.addEventListener('install', function(e) {
    e.waitUntil(
        caches.open('stock_item_balance').then(function(cache) {
            return cache.addAll([
                '/app/offline_content/jquery-3.5.1.min.js',
                '/app/offline_content/bootstrap-4.5.2-dist/css/bootstrap.min.css',
                '/app/offline_content/bootstrap-4.5.2-dist/js/bootstrap.min.js'
            ]);
        })
    );
});

//FETCH
self.addEventListener('fetch', function(event) {
    console.log(event.request.url);

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

I did try this:

//UPDATE CACHE IF UPDATES
const cacheName = 'my_app_v1';

self.addEventListener('activate', async (event) => {

    const existingCaches = await caches.keys();
    
    const invalidCaches = existingCaches.filter(c => c !== cacheName);
    
    await Promise.all(invalidCaches.map(ic => caches.delete(ic)));
});

To be honest i'm not really sure what all this do, so be gentle on me.

EDIT
Or maby it does work.. after all..

1 Answers

I highly recommend you to use Workbox for ServiceWorker code. In your case revision would help. More info here: https://developers.google.com/web/tools/workbox/modules/workbox-precaching

import {precacheAndRoute} from 'workbox-precaching';

precacheAndRoute([
  {url: '/index.html', revision: '383676' },
  {url: '/styles/app.0c9a31.css', revision: null},
  {url: '/scripts/app.0d5770.js', revision: null},
  // ... other entries ...
]);
Related