Кэш-память работника сервиса не обновляется при изменении кода - PullRequest
0 голосов
/ 13 января 2020

Мое одностраничное веб-приложение, написанное как PWA. Это ASP. NET приложение веб-API, которое размещено в IIS. Мое приложение использует сервисный работник, который защищает оболочку моего приложения. Другое содержимое записывается в indexedDB или обновляется в кэше рабочего сервиса на лету, когда пользователь щелкает по приложению.

У меня проблема с изменениями кода. Когда я обновляю код и обновляю sh моего браузера, я вижу свои изменения непосредственно в коде javascript и html. Когда я go отключен, мое приложение возвращается к коду, который находится в моем сервисном работнике. Этот код все еще старый код. Кажется, не обновляется, когда я перезагружаю свое приложение. Мой сервисный работник выглядит так:

const urlsToCache = ['.' 
    , 'index.html'
    , 'favicon.ico'
    , 'service-worker.js'
    // More sources are cached here
];

self.addEventListener('install', function (event) {

    console.log('\'Install\' event triggered.');
    event.waitUntil(
        caches.open(CACHE).then(function (cache) {
            console.log('Application shell and content has been cached.')
            return cache.addAll(urlsToCache);
        }).then(function (event) {
            return self.skipWaiting();
        })
    );
});

self.addEventListener('activate', function (event) {
    console.log('\'Activate\' event triggered.');
    return self.clients.claim();
});

Для регистрации сервисного работника мой код выглядит так:

navigator.serviceWorker.register('./service-worker.js')
                .then(function (registration) {
                    console.log('Registered: ', registration);
                    registration.update();
                    console.log('Updated: ', registration);
                    resolve(registration);
                }).catch(function (error) {
                    console.log('Registration failed: ', error);
                    reject(error);
                });

Поэтому, когда сервисный работник регистрируется, он также проверяет наличие обновлений. , Однако он обновляется только при изменении самого кода рабочего сервиса. Не тогда, когда код внутри оболочки приложения изменяется без изменения самого кода работника сервиса.

Как я могу убедиться, что код моего работника сервиса перезагружается, когда я изменяю код приложения и обновляю sh страницу

...