Update service-worker.js
Browse files- service-worker.js +47 -3
service-worker.js
CHANGED
@@ -1,3 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
// メッセージ受信処理
|
2 |
self.addEventListener('message', (event) => {
|
3 |
if (event.data && event.data.type === 'CACHE_FILES') {
|
@@ -17,10 +34,37 @@ self.addEventListener('message', (event) => {
|
|
17 |
// 新しいキャッシュリストでキャッシュを更新
|
18 |
event.waitUntil(
|
19 |
caches.open(CACHE_NAME).then(cache => {
|
20 |
-
return cache.addAll(cachedFiles)
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
})
|
24 |
);
|
25 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
});
|
|
|
1 |
+
const CACHE_NAME = 'media-player-cache-v1';
|
2 |
+
let cachedFiles = ['/index.html'];
|
3 |
+
|
4 |
+
// インストール時のキャッシュ処理
|
5 |
+
self.addEventListener('install', (event) => {
|
6 |
+
event.waitUntil(
|
7 |
+
caches.open(CACHE_NAME)
|
8 |
+
.then(cache => {
|
9 |
+
console.log('キャッシュを追加中:', cachedFiles);
|
10 |
+
return cache.addAll(cachedFiles);
|
11 |
+
})
|
12 |
+
.catch(error => {
|
13 |
+
console.error('キャッシュ追加エラー:', error);
|
14 |
+
})
|
15 |
+
);
|
16 |
+
});
|
17 |
+
|
18 |
// メッセージ受信処理
|
19 |
self.addEventListener('message', (event) => {
|
20 |
if (event.data && event.data.type === 'CACHE_FILES') {
|
|
|
34 |
// 新しいキャッシュリストでキャッシュを更新
|
35 |
event.waitUntil(
|
36 |
caches.open(CACHE_NAME).then(cache => {
|
37 |
+
return cache.addAll(cachedFiles)
|
38 |
+
.then(() => {
|
39 |
+
console.log('すべてのファイルがキャッシュされました');
|
40 |
+
// 既存のキャッシュから不要なファイルを削除
|
41 |
+
return cache.keys().then(keys => {
|
42 |
+
keys.forEach(request => {
|
43 |
+
if (!cachedFiles.includes(request.url.replace(self.location.origin, ''))) {
|
44 |
+
cache.delete(request);
|
45 |
+
}
|
46 |
+
});
|
47 |
+
});
|
48 |
+
})
|
49 |
+
.catch(error => {
|
50 |
+
console.error('キャッシュ追加エラー:', error);
|
51 |
+
});
|
52 |
})
|
53 |
);
|
54 |
}
|
55 |
+
});
|
56 |
+
|
57 |
+
// フェッチイベントの処理
|
58 |
+
self.addEventListener('fetch', (event) => {
|
59 |
+
event.respondWith(
|
60 |
+
caches.match(event.request)
|
61 |
+
.then(response => {
|
62 |
+
// キャッシュがあればそれを返す
|
63 |
+
if (response) {
|
64 |
+
return response;
|
65 |
+
}
|
66 |
+
// キャッシュがなければネットワークから取得
|
67 |
+
return fetch(event.request);
|
68 |
+
})
|
69 |
+
);
|
70 |
});
|