1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-07-01 16:49:22 +00:00
Classworks/public/sw-cache-manager.js
2025-04-05 12:19:46 +08:00

44 lines
1.5 KiB
JavaScript

// 添加缓存管理消息处理
self.addEventListener('message', (event) => {
if (event.data && event.data.type === 'CACHE_KEYS') {
// 获取所有缓存键
caches.keys().then((cacheNames) => {
event.ports[0].postMessage({ cacheNames });
});
} else if (event.data && event.data.type === 'CACHE_CONTENT') {
// 获取特定缓存的内容
const cacheName = event.data.cacheName;
caches.open(cacheName).then((cache) => {
cache.keys().then((requests) => {
const urls = requests.map(request => request.url);
event.ports[0].postMessage({ cacheName, urls });
});
});
} else if (event.data && event.data.type === 'CLEAR_CACHE') {
// 清除特定缓存
const cacheName = event.data.cacheName;
caches.delete(cacheName).then((success) => {
event.ports[0].postMessage({ success, cacheName });
});
} else if (event.data && event.data.type === 'CLEAR_URL') {
// 清除特定URL的缓存
const cacheName = event.data.cacheName;
const url = event.data.url;
caches.open(cacheName).then((cache) => {
cache.delete(url).then((success) => {
event.ports[0].postMessage({ success, cacheName, url });
});
});
} else if (event.data && event.data.type === 'CLEAR_ALL_CACHES') {
// 清除所有缓存
caches.keys().then((cacheNames) => {
Promise.all(
cacheNames.map(name => caches.delete(name))
).then(() => {
event.ports[0].postMessage({ success: true });
});
});
}
});
console.log('Cache Manager extension loaded');