soiz1 commited on
Commit
9d43c0f
·
1 Parent(s): 97d02a0

Update service-worker.js

Browse files
Files changed (1) hide show
  1. 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).catch(error => {
21
- console.error('キャッシュ追加エラー:', error);
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
  });