Я установил базовую установку работника службы для разрабатываемого приложения.
У этого работника службы возникает много проблем, когда пользователи выходят из системы и выполняют вход с другим именем пользователя. Или даже иногда это блокирует вход.
Я в основном знаю, что происходит, я просто не могу понять, как это исправить.
Итак, мое приложение предназначено исключительно для зарегистрированных пользователей, поэтомунеавторизованный пользователь может только просматривать страницу входа.
Моя первая проблема заключается в том, что когда пользователь входит в систему, страница панели мониторинга кэшируется, а если они выходят из системы и выполняют вход в качестве другого использования, отображается панель мониторинга первого пользователя. (В верхней части страницы отображается неверное имя пользователя)
Вторая проблема заключается в том, что иногда страница входа кэшируется таким образом, что она постоянно перенаправляет пользователей обратно на страницу входа, даже если они успешно вошли в систему.
Все эти проблемы полностью устраняются, как только пользователь делает ctrl + f5
, поскольку он не использует кэш и не получает весь контент прямо из сети.
Вот мой sw.js
файл:
importScripts( '/cache-polyfill.js' );
var CACHE_NAME = 'XYZ-cache-v0.4.16';
var assetsToCache = [
// A list of CSS, JS, Images and font files
];
self.addEventListener( 'install', event => {
event.waitUntil(
caches.open(CACHE_NAME).then(cache => cache.addAll(assetsToCache))
);
});
self.addEventListener('activate', async (e) => {
e.waitUntil(
caches.keys().then((keyList) => {
return Promise.all(keyList.map((key) => {
if(CACHE_NAME.indexOf(key) === -1) {
return caches.delete(key);
}
}));
})
);
});
self.addEventListener('fetch', (e) => {
e.respondWith(
caches.match(e.request).then((r) => {
return r || fetch(e.request).then((response) => {
return caches.open(CACHE_NAME).then((cache) => {
cache.put(e.request, response.clone());
return response;
});
});
})
);
});