123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const CACHE = 'cache-and-update-v1.0';
- // При установке воркера мы должны закешировать часть данных (статику).
- self.addEventListener('install', (event) => {
- event.waitUntil(
- caches.open(CACHE).then((cache) =>
- cache.addAll(['https://yandex.ru/ads/system/context.js','https://yandex.ru/ads/system/header-bidding.js',
- 'https://mc.yandex.ru/metrika/tag.js',
- 'https://www.google-analytics.com/analytics.js',
- 'https://platform-api.sharethis.com/js/sharethis.js#property=63ecb32f4a4876001374e328&product=inline-reaction-buttons',
- 'https://www.googletagmanager.com/gtag/js?id=G-B56TR2TLTN',
- 'https://avatars.mds.yandex.net',
- 'https://cdn1.moe.video/player/mvplayer.min.js']
- )
- )
- )
- });
- self.addEventListener('fetch', function(event) {
- event.respondWith(fromCache(event.request, event));
- event.waitUntil(update(event.request));
- });
- self.addEventListener('sync', function(event) {
- if (event.tag == 'background-sync') {
- event.waitUntil(update(event.request));
- }
- });
- self.addEventListener('activate', function(event) {
- var cacheWhitelist = ['bootstrap.min.css'];
- event.waitUntil(
- // Получение всех ключей из кэша.
- caches.keys().then(function(cacheNames) {
- return Promise.all(
- // Прохождение по всем кэшированным файлам.
- cacheNames.map(function(cacheName) {
- // Если файл из кэша не находится в белом списке,
- // его следует удалить.
- if (cacheWhitelist.indexOf(cacheName) === -1) {
- return caches.delete(cacheName);
- }
- })
- );
- })
- );
- });
- function fromCache(request, event) {
- return caches.open(CACHE).then((cache) =>
- cache.match(request).then((matching) =>
- matching || fetch(event.request)
- ));
- };
- function update(request) {
- return caches.open(CACHE).then((cache) =>
- fetch(request).then((response) =>
- cache.put(request, response)
- )
- );
- };
|