Aleksmorshen commited on
Commit
acf1bf3
·
verified ·
1 Parent(s): ce02621

Update service-worker.js

Browse files
Files changed (1) hide show
  1. service-worker.js +41 -62
service-worker.js CHANGED
@@ -1,70 +1,49 @@
1
- const CACHE_NAME = 'my-site-cache-v1'; // Обновляйте версию при каждом изменении
2
- const urlsToCache = [
3
- '/',
4
- '/index.html',
5
- '/style.css',
6
- '/icon.png' // Добавьте все необходимые ресурсы
7
  ];
8
 
9
  self.addEventListener('install', (event) => {
10
- event.waitUntil(
11
- caches.open(CACHE_NAME)
12
- .then((cache) => {
13
- console.log('Opened cache');
14
- return cache.addAll(urlsToCache);
15
- })
16
- .catch((error) => {
17
- console.error('Failed to cache resources:', error);
18
- })
19
- );
20
- });
21
-
22
- self.addEventListener('fetch', (event) => {
23
- event.respondWith(
24
- caches.match(event.request)
25
- .then((response) => {
26
- // Cache hit - return response
27
- if (response) {
28
- return response;
29
- }
30
-
31
- // Not in cache - return fetch
32
- return fetch(event.request).then(
33
- (response) => {
34
- // Check if we received a valid response
35
- if (!response || response.status !== 200 || response.type !== 'basic') {
36
- return response;
37
- }
38
-
39
- // IMPORTANT: Clone the response. A response is a stream
40
- // and because we want the cache to use it, we need
41
- // to clone it so the original response can be
42
- // consumed by the browser as well.
43
- const responseToCache = response.clone();
44
-
45
- caches.open(CACHE_NAME)
46
- .then((cache) => {
47
- cache.put(event.request, responseToCache);
48
- });
49
-
50
- return response;
51
- }
52
- );
53
- })
54
- );
55
  });
56
 
57
  self.addEventListener('activate', (event) => {
58
- const cacheWhitelist = [CACHE_NAME];
59
- event.waitUntil(
60
- caches.keys().then((cacheNames) => {
61
- return Promise.all(
62
- cacheNames.map((cacheName) => {
63
- if (cacheWhitelist.indexOf(cacheName) === -1) {
64
- return caches.delete(cacheName);
65
- }
 
 
66
  })
67
- );
68
- })
69
- );
70
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const CACHE_NAME = 'my-site-cache-v2';
2
+ const URLS_TO_CACHE = [
3
+ '/',
4
+ '/index.html',
5
+ '/style.css',
6
+ '/icon.png'
7
  ];
8
 
9
  self.addEventListener('install', (event) => {
10
+ event.waitUntil(
11
+ caches.open(CACHE_NAME).then((cache) => {
12
+ console.log('Opened cache');
13
+ return cache.addAll(URLS_TO_CACHE);
14
+ })
15
+ );
16
+ self.skipWaiting(); // Применяет новый SW сразу
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  });
18
 
19
  self.addEventListener('activate', (event) => {
20
+ event.waitUntil(
21
+ caches.keys().then((cacheNames) => {
22
+ return Promise.all(
23
+ cacheNames.map((cacheName) => {
24
+ if (cacheName !== CACHE_NAME) {
25
+ console.log('Deleting old cache:', cacheName);
26
+ return caches.delete(cacheName);
27
+ }
28
+ })
29
+ );
30
  })
31
+ );
32
+ self.clients.claim(); // Обновляет SW без перезапуска
 
33
  });
34
+
35
+ self.addEventListener('fetch', (event) => {
36
+ if (event.request.mode === 'navigate') {
37
+ event.respondWith(
38
+ caches.match('/index.html').then((response) => {
39
+ return response || fetch(event.request);
40
+ })
41
+ );
42
+ } else {
43
+ event.respondWith(
44
+ caches.match(event.request).then((response) => {
45
+ return response || fetch(event.request);
46
+ })
47
+ );
48
+ }
49
+ });