Skip to content

Commit bb8d5a6

Browse files
authored
Add files via upload
1 parent 14dd558 commit bb8d5a6

3 files changed

Lines changed: 146 additions & 0 deletions

File tree

sample/index.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!doctype html>
2+
3+
<html>
4+
<head>
5+
<title>Проверка</title>
6+
</head>
7+
8+
<body>
9+
<h1>Привет!!!</h1>
10+
11+
<script src="js/app.js"></script>
12+
</body>
13+
</html>

sample/js/app.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
if ('serviceWorker' in navigator) {
2+
// Регистрируем Сервис-воркер
3+
navigator.serviceWorker.register('/sample/service-worker.js', {
4+
scope: '/'
5+
});
6+
}

sample/service-worker.js

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
// Service Worker
2+
//------------------------------------------------------------------------------
3+
4+
'use strict';
5+
6+
// наименование для нашего хранилища кэша
7+
var CACHE_NAME = 'app_serviceworker_v_1',
8+
// ссылки на кэшируемые файлы
9+
cacheUrls = [
10+
'/sample/js/app.js',
11+
'/sample/index.html'
12+
];
13+
14+
self.addEventListener('install', function(event) {
15+
// задержим обработку события
16+
// если произойдёт ошибка, serviceWorker не установится
17+
event.waitUntil(
18+
// находим в глобальном хранилище Cache-объект с нашим именем
19+
// если такого не существует, то он будет создан
20+
caches.open(CACHE_NAME).then(function(cache) {
21+
// загружаем в наш cache необходимые файлы
22+
return cache.addAll(cacheUrls);
23+
})
24+
);
25+
});
26+
27+
self.addEventListener('activate', function(event) {
28+
// активация
29+
console.log('activate', event);
30+
});
31+
32+
// период обновления кэша - одни сутки
33+
var MAX_AGE = 86400000;
34+
35+
self.addEventListener('fetch', function(event) {
36+
37+
event.respondWith(
38+
// ищем запрошенный ресурс среди закэшированных
39+
caches.match(event.request).then(function(cachedResponse) {
40+
var lastModified, fetchRequest;
41+
42+
// если ресурс есть в кэше
43+
if (cachedResponse) {
44+
// получаем дату последнего обновления
45+
lastModified = new Date(cachedResponse.headers.get('last-modified'));
46+
// и если мы считаем ресурс устаревшим
47+
if (lastModified && (Date.now() - lastModified.getTime()) > MAX_AGE) {
48+
49+
fetchRequest = event.request.clone();
50+
// создаём новый запрос
51+
return fetch(fetchRequest).then(function(response) {
52+
// при неудаче всегда можно выдать ресурс из кэша
53+
if (!response || response.status !== 200) {
54+
return cachedResponse;
55+
}
56+
// обновляем кэш
57+
caches.open(CACHE_NAME).then(function(cache) {
58+
cache.put(event.request, response.clone());
59+
});
60+
// возвращаем свежий ресурс
61+
return response;
62+
}).catch(function() {
63+
return cachedResponse;
64+
});
65+
}
66+
return cachedResponse;
67+
}
68+
69+
// запрашиваем из сети как обычно
70+
return fetch(event.request);
71+
})
72+
);
73+
});
74+
75+
// // Задаем имя
76+
// var CACHE = 'mahoweek-cache-and-update';
77+
78+
// // Устанавливаем
79+
// self.addEventListener('install', function(event) {
80+
// // Кэшируем файлы
81+
// event.waitUntil(precache());
82+
// });
83+
84+
// // Настраиваем ответы на запросы
85+
// self.addEventListener('fetch', function(event) {
86+
// // Показываем файлы из кэша
87+
// event.respondWith(fromCache(event.request));
88+
89+
// // Обновляем файлы в кэше
90+
// // event.waitUntil(update(event.request));
91+
// });
92+
93+
// // Выбираем файлы для кэширования
94+
// function precache() {
95+
// return caches.open(CACHE).then(function(cache) {
96+
// return cache.addAll([
97+
// '/css/libs.min.css?v=1.13.0',
98+
// '/css/main.min.css?v=1.13.0',
99+
// '/js/libs.min.js?v=1.13.0',
100+
// '/js/app.min.js?v=1.13.0',
101+
// '/index.html'
102+
// ]);
103+
// });
104+
// }
105+
106+
// // Выбираем файлы из кэша
107+
// function fromCache(request) {
108+
// return caches.open(CACHE).then(function(cache) {
109+
// return cache.match(request).then(function(matching) {
110+
// // return matching || Promise.reject('no-match');
111+
// if (matching) {
112+
// return matching;
113+
// }
114+
115+
// // return fetch(request);
116+
// });
117+
// });
118+
// }
119+
120+
// // Обновляем файлы в кэше
121+
// function update(request) {
122+
// return caches.open(CACHE).then(function(cache) {
123+
// return fetch(request).then(function(response) {
124+
// return cache.put(request, response);
125+
// });
126+
// });
127+
// }

0 commit comments

Comments
 (0)