Skip to content

Commit 986308a

Browse files
authored
Update service-worker.js
1 parent 7d6e3e7 commit 986308a

1 file changed

Lines changed: 38 additions & 115 deletions

File tree

sample/service-worker.js

Lines changed: 38 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -3,126 +3,49 @@
33

44
'use strict';
55

6-
// наименование для нашего хранилища кэша
7-
var CACHE_NAME = 'app_serviceworker_v_1',
8-
// ссылки на кэшируемые файлы
9-
cacheUrls = [
10-
'/sample/',
11-
'/sample/js/app.js',
12-
'/sample/index.html'
13-
];
6+
// Задаем имя
7+
var CACHE = 'mahoweek-cache-and-update';
148

9+
// Устанавливаем
1510
self.addEventListener('install', function(event) {
16-
// задержим обработку события
17-
// если произойдёт ошибка, serviceWorker не установится
18-
event.waitUntil(
19-
// находим в глобальном хранилище Cache-объект с нашим именем
20-
// если такого не существует, то он будет создан
21-
caches.open(CACHE_NAME).then(function(cache) {
22-
// загружаем в наш cache необходимые файлы
23-
return cache.addAll(cacheUrls);
24-
})
25-
);
11+
// Кэшируем файлы
12+
event.waitUntil(precache());
2613
});
2714

28-
self.addEventListener('activate', function(event) {
29-
// активация
30-
console.log('activate', event);
31-
});
32-
33-
// период обновления кэша - одни сутки
34-
var MAX_AGE = 86400000;
35-
15+
// Настраиваем ответы на запросы
3616
self.addEventListener('fetch', function(event) {
17+
// Показываем файлы из кэша
18+
event.respondWith(fromCache(event.request));
3719

38-
event.respondWith(
39-
// ищем запрошенный ресурс среди закэшированных
40-
caches.match(event.request).then(function(cachedResponse) {
41-
var lastModified, fetchRequest;
42-
43-
// если ресурс есть в кэше
44-
if (cachedResponse) {
45-
// получаем дату последнего обновления
46-
lastModified = new Date(cachedResponse.headers.get('last-modified'));
47-
// и если мы считаем ресурс устаревшим
48-
if (lastModified && (Date.now() - lastModified.getTime()) > MAX_AGE) {
49-
50-
fetchRequest = event.request.clone();
51-
// создаём новый запрос
52-
return fetch(fetchRequest).then(function(response) {
53-
// при неудаче всегда можно выдать ресурс из кэша
54-
if (!response || response.status !== 200) {
55-
return cachedResponse;
56-
}
57-
// обновляем кэш
58-
caches.open(CACHE_NAME).then(function(cache) {
59-
cache.put(event.request, response.clone());
60-
});
61-
// возвращаем свежий ресурс
62-
return response;
63-
}).catch(function() {
64-
return cachedResponse;
65-
});
66-
}
67-
return cachedResponse;
68-
}
69-
70-
// запрашиваем из сети как обычно
71-
return fetch(event.request);
72-
})
73-
);
20+
// Обновляем файлы в кэше
21+
event.waitUntil(update(event.request));
7422
});
7523

76-
// // Задаем имя
77-
// var CACHE = 'mahoweek-cache-and-update';
78-
79-
// // Устанавливаем
80-
// self.addEventListener('install', function(event) {
81-
// // Кэшируем файлы
82-
// event.waitUntil(precache());
83-
// });
84-
85-
// // Настраиваем ответы на запросы
86-
// self.addEventListener('fetch', function(event) {
87-
// // Показываем файлы из кэша
88-
// event.respondWith(fromCache(event.request));
89-
90-
// // Обновляем файлы в кэше
91-
// // event.waitUntil(update(event.request));
92-
// });
93-
94-
// // Выбираем файлы для кэширования
95-
// function precache() {
96-
// return caches.open(CACHE).then(function(cache) {
97-
// return cache.addAll([
98-
// '/css/libs.min.css?v=1.13.0',
99-
// '/css/main.min.css?v=1.13.0',
100-
// '/js/libs.min.js?v=1.13.0',
101-
// '/js/app.min.js?v=1.13.0',
102-
// '/index.html'
103-
// ]);
104-
// });
105-
// }
106-
107-
// // Выбираем файлы из кэша
108-
// function fromCache(request) {
109-
// return caches.open(CACHE).then(function(cache) {
110-
// return cache.match(request).then(function(matching) {
111-
// // return matching || Promise.reject('no-match');
112-
// if (matching) {
113-
// return matching;
114-
// }
115-
116-
// // return fetch(request);
117-
// });
118-
// });
119-
// }
120-
121-
// // Обновляем файлы в кэше
122-
// function update(request) {
123-
// return caches.open(CACHE).then(function(cache) {
124-
// return fetch(request).then(function(response) {
125-
// return cache.put(request, response);
126-
// });
127-
// });
128-
// }
24+
// Выбираем файлы для кэширования
25+
function precache() {
26+
return caches.open(CACHE).then(function(cache) {
27+
return cache.addAll([
28+
'/sample/',
29+
'/sample/js/app.js',
30+
'/sample/index.html'
31+
]);
32+
});
33+
}
34+
35+
// Выбираем файлы из кэша
36+
function fromCache(request) {
37+
return caches.open(CACHE).then(function(cache) {
38+
return cache.match(request).then(function(matching) {
39+
return matching || Promise.reject('no-match');
40+
});
41+
});
42+
}
43+
44+
// Обновляем файлы в кэше
45+
function update(request) {
46+
return caches.open(CACHE).then(function(cache) {
47+
return fetch(request).then(function(response) {
48+
return cache.put(request, response);
49+
});
50+
});
51+
}

0 commit comments

Comments
 (0)