soiz1 commited on
Commit
5a2ae03
·
1 Parent(s): 776c0c7

Update sw.js

Browse files
Files changed (1) hide show
  1. sw.js +31 -59
sw.js CHANGED
@@ -1,8 +1,25 @@
1
  const CACHE_NAME = 'media-player-cache-v1';
2
- let cachedFiles = ['/index.html', '/index.html?mode=t'];
3
 
4
- // インストール時のキャッシュ処理
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  self.addEventListener('install', (event) => {
 
6
  event.waitUntil(
7
  caches.open(CACHE_NAME)
8
  .then(cache => {
@@ -15,63 +32,18 @@ self.addEventListener('install', (event) => {
15
  );
16
  });
17
 
18
- self.addEventListener('message', (event) => {
19
- if (event.data && event.data.type === 'CACHE_FILES') {
20
- cachedFiles = ['/index.html', ...event.data.files]; // index.htmlは常に含める
21
-
22
- // チェックボックスの状態を保存
23
- if (event.data.checkboxStates) {
24
- event.waitUntil(
25
- caches.open('settings-cache').then(cache => {
26
- return cache.put(
27
- new Request('checkbox-states'),
28
- new Response(JSON.stringify(event.data.checkboxStates))
29
- );
30
- })
31
- );
32
- }
33
-
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
- // キャッシュ内のURLからoriginを除去し、クエリも除いてパスのみ取得
43
- const cachedPaths = keys.map(request => {
44
- const urlObj = new URL(request.url);
45
- return urlObj.pathname;
46
- });
47
-
48
- cachedPaths.forEach((path, index) => {
49
- if (!cachedFiles.includes(path)) {
50
- cache.delete(keys[index]);
51
- }
52
- });
53
- });
54
- })
55
- .catch(error => {
56
- console.error('キャッシュ追加エラー:', error);
57
- });
58
- })
59
- );
60
- }
61
  });
62
 
63
-
64
- // フェッチイベントの処理
65
  self.addEventListener('fetch', (event) => {
66
- event.respondWith(
67
- caches.match(event.request)
68
- .then(response => {
69
- // キャッシュがあればそれを返す
70
- if (response) {
71
- return response;
72
- }
73
- // キャッシュがなければネットワークから取得
74
- return fetch(event.request);
75
- })
76
- );
77
- });
 
1
  const CACHE_NAME = 'media-player-cache-v1';
 
2
 
3
+ const cachedFiles = [
4
+ '/index.html',
5
+ '/index.html?mode=t',
6
+ '/v.mp4',
7
+ '/t/v.mp4',
8
+ '/p.mp3',
9
+ '/s.mp3',
10
+ '/a.mp3',
11
+ '/t.mp3',
12
+ '/k.mp3',
13
+ '/t/p.mp3',
14
+ '/t/s.mp3',
15
+ '/t/a.mp3',
16
+ '/t/t.mp3',
17
+ '/t/k.mp3'
18
+ ];
19
+
20
+ // インストール時:すべてのファイルをキャッシュ
21
  self.addEventListener('install', (event) => {
22
+ self.skipWaiting(); // 即時有効化
23
  event.waitUntil(
24
  caches.open(CACHE_NAME)
25
  .then(cache => {
 
32
  );
33
  });
34
 
35
+ // アクティベート時:即座にコントロール
36
+ self.addEventListener('activate', (event) => {
37
+ console.log('Service Worker アクティベート');
38
+ event.waitUntil(self.clients.claim());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  });
40
 
41
+ // フェッチ:キャッシュ優先
 
42
  self.addEventListener('fetch', (event) => {
43
+ event.respondWith(
44
+ caches.match(event.request)
45
+ .then(response => {
46
+ return response || fetch(event.request);
47
+ })
48
+ );
49
+ });