Kgshop commited on
Commit
b1f0a64
·
verified ·
1 Parent(s): 03d8900

Update service-worker.js

Browse files
Files changed (1) hide show
  1. service-worker.js +31 -4
service-worker.js CHANGED
@@ -1,4 +1,4 @@
1
- const CACHE_NAME = 'teplostil-cache-v3'; // Обновите версию при изменении файлов!
2
  const URLS_TO_CACHE = [
3
  '/',
4
  '/index.html',
@@ -8,6 +8,7 @@ const URLS_TO_CACHE = [
8
  '/manifest.json'
9
  ];
10
 
 
11
  self.addEventListener('install', (event) => {
12
  event.waitUntil(
13
  caches.open(CACHE_NAME).then((cache) => {
@@ -15,9 +16,10 @@ self.addEventListener('install', (event) => {
15
  return cache.addAll(URLS_TO_CACHE);
16
  })
17
  );
18
- self.skipWaiting(); // Применяет новый SW сразу
19
  });
20
 
 
21
  self.addEventListener('activate', (event) => {
22
  event.waitUntil(
23
  caches.keys().then((cacheNames) => {
@@ -31,10 +33,25 @@ self.addEventListener('activate', (event) => {
31
  );
32
  })
33
  );
34
- self.clients.claim(); // Обновляет SW без перезапуска
35
  });
36
 
 
37
  self.addEventListener('fetch', (event) => {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  if (event.request.mode === 'navigate') {
39
  event.respondWith(
40
  caches.match('/index.html').then((response) => {
@@ -42,9 +59,19 @@ self.addEventListener('fetch', (event) => {
42
  })
43
  );
44
  } else {
 
45
  event.respondWith(
46
  caches.match(event.request).then((response) => {
47
- return response || fetch(event.request);
 
 
 
 
 
 
 
 
 
48
  })
49
  );
50
  }
 
1
+ const CACHE_NAME = 'teplostil-cache-v4'; // Обновил версию кэша
2
  const URLS_TO_CACHE = [
3
  '/',
4
  '/index.html',
 
8
  '/manifest.json'
9
  ];
10
 
11
+ // Установка Service Worker и кэширование ресурсов
12
  self.addEventListener('install', (event) => {
13
  event.waitUntil(
14
  caches.open(CACHE_NAME).then((cache) => {
 
16
  return cache.addAll(URLS_TO_CACHE);
17
  })
18
  );
19
+ self.skipWaiting(); // Активируем новый SW сразу
20
  });
21
 
22
+ // Активация и удаление старых кэшей
23
  self.addEventListener('activate', (event) => {
24
  event.waitUntil(
25
  caches.keys().then((cacheNames) => {
 
33
  );
34
  })
35
  );
36
+ self.clients.claim(); // Применяем SW к текущим страницам
37
  });
38
 
39
+ // Обработка запросов
40
  self.addEventListener('fetch', (event) => {
41
+ const requestUrl = new URL(event.request.url);
42
+
43
+ // Пропускаем запросы к внешнему iframe (https://kgmenu-example.hf.space/)
44
+ if (requestUrl.origin !== self.location.origin) {
45
+ event.respondWith(
46
+ fetch(event.request).catch(() => {
47
+ // Если сеть недоступна, можно вернуть заглушку, но для авторизации лучше не кэшировать
48
+ return new Response('Network error occurred', { status: 503 });
49
+ })
50
+ );
51
+ return;
52
+ }
53
+
54
+ // Для навигационных запросов (например, переходов внутри PWA)
55
  if (event.request.mode === 'navigate') {
56
  event.respondWith(
57
  caches.match('/index.html').then((response) => {
 
59
  })
60
  );
61
  } else {
62
+ // Для локальных ресурсов используем Cache First
63
  event.respondWith(
64
  caches.match(event.request).then((response) => {
65
+ return response || fetch(event.request).then((networkResponse) => {
66
+ // Кэшируем только локальные ресурсы
67
+ if (requestUrl.origin === self.location.origin) {
68
+ return caches.open(CACHE_NAME).then((cache) => {
69
+ cache.put(event.request, networkResponse.clone());
70
+ return networkResponse;
71
+ });
72
+ }
73
+ return networkResponse;
74
+ });
75
  })
76
  );
77
  }