89 lines
2.8 KiB (Stored with Git LFS)
JavaScript
89 lines
2.8 KiB (Stored with Git LFS)
JavaScript
var CACHE_VERSION = 'uwuzu-cache-v1';
|
|
|
|
var resources = [
|
|
"/css/color.css",
|
|
"/css/font.css",
|
|
"/css/home.css",
|
|
"/home/index.php",
|
|
"/unsupported.php",
|
|
"/img/sysimage/menuicon/addemoji.svg",
|
|
"/img/sysimage/menuicon/addnotice.svg",
|
|
"/img/sysimage/menuicon/bookmark.svg",
|
|
"/img/sysimage/menuicon/emoji.svg",
|
|
"/img/sysimage/menuicon/home.svg",
|
|
"/img/sysimage/menuicon/info.svg",
|
|
"/img/sysimage/menuicon/logout.svg",
|
|
"/img/sysimage/menuicon/menu.svg",
|
|
"/img/sysimage/menuicon/notice.svg",
|
|
"/img/sysimage/menuicon/notification.svg",
|
|
"/img/sysimage/menuicon/notification2.svg",
|
|
"/img/sysimage/menuicon/others.svg",
|
|
"/img/sysimage/menuicon/privacypolicy.svg",
|
|
"/img/sysimage/menuicon/profile.svg",
|
|
"/img/sysimage/menuicon/search.svg",
|
|
"/img/sysimage/menuicon/server.svg",
|
|
"/img/sysimage/menuicon/settings.svg",
|
|
"/img/sysimage/menuicon/terms.svg",
|
|
"/img/sysimage/menuicon/useradmin.svg"
|
|
];
|
|
|
|
self.addEventListener('install', function (e) {
|
|
e.waitUntil(
|
|
caches.open(CACHE_VERSION).then(function (cache) {
|
|
return cache.addAll(resources);
|
|
})
|
|
);
|
|
});
|
|
|
|
self.addEventListener('fetch', function (e) {
|
|
if (!(e.request.url.indexOf('http') === 0)) return;
|
|
|
|
if (e.request.method !== 'GET') {
|
|
return;
|
|
}
|
|
|
|
const url = new URL(e.request.url);
|
|
const pathname = url.pathname;
|
|
|
|
if (resources.includes(pathname)) {
|
|
e.respondWith(
|
|
caches.match(e.request).then(function (response) {
|
|
if (response) {
|
|
return response;
|
|
}
|
|
return fetch(e.request);
|
|
})
|
|
);
|
|
} else {
|
|
e.respondWith(fetch(e.request));
|
|
}
|
|
});
|
|
|
|
|
|
self.addEventListener('message', function (e) {
|
|
if (e.data && e.data.action === 'clearCache') {
|
|
caches.keys().then(function (cacheNames) {
|
|
Promise.all(
|
|
cacheNames.map(function (cacheName) {
|
|
if (cacheName === CACHE_VERSION) {
|
|
return caches.delete(cacheName);
|
|
}
|
|
})
|
|
).then(function (results) {
|
|
if (results.includes(true)) {
|
|
console.log('キャッシュを削除しました');
|
|
caches.open(CACHE_VERSION).then(function (cache) {
|
|
cache.addAll(resources).then(function () {
|
|
console.log('リソースを再キャッシュしました');
|
|
}).catch(function (error) {
|
|
console.error('リソースの再キャッシュに失敗しました:', error);
|
|
});
|
|
});
|
|
} else {
|
|
console.log('キャッシュ削除に失敗しました');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|