1'use strict'; 2 3// ÐенÑй веÑÑÐ¸Ñ Ð¿Ñи обновлении ÑÑаÑики вне DLE cache-id (ÑÑиÑÑÑ, иконки) 4var CACHE = 'igrypro-v1'; 5 6// âââ УÑÑановка ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 7self.addEventListener('install', function(e) { 8 // ÐкÑивиÑÑемÑÑ ÑÑазÑ, не ждÑм закÑÑÑÐ¸Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº 9 e.waitUntil(self.skipWaiting()); 10}); 11 12// âââ ÐкÑиваÑÐ¸Ñ ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 13self.addEventListener('activate', function(e) { 14 e.waitUntil( 15 caches.keys().then(function(keys) { 16 // УдалÑем вÑе ÑÑаÑÑе кÑÑи Ñ Ð´ÑÑгим именем 17 return Promise.all( 18 keys.filter(function(k) { return k !== CACHE; }) 19 .map(function(k) { return caches.delete(k); }) 20 ); 21 }).then(function() { return self.clients.claim(); }) 22 ); 23}); 24 25// âââ ÐеÑÐµÑ Ð²Ð°Ñ Ð·Ð°Ð¿ÑоÑов âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 26self.addEventListener('fetch', function(e) { 27 if (e.request.method !== 'GET') return; 28 29 var url = new URL(e.request.url); 30 31 // ТолÑко Ñвой origin, не ÑÑогаем cross-origin (ÑекламÑ, аналиÑикÑ) 32 if (url.origin !== self.location.origin) return; 33 34 // Cache-first: CSS, JS и ÑÑиÑÑÑ ÑÐµÐ¼Ñ 35 // ?v=... в URL гаÑанÑиÑÑÐµÑ ÑÑо Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ñайла = новÑй URL = Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð² кÑÑе 36 var isThemeStatic = url.pathname.startsWith('/templates/igroutka_new/css/') || 37 url.pathname.startsWith('/templates/igroutka_new/js/') || 38 url.pathname.startsWith('/templates/igroutka_new/webfonts/') || 39 url.pathname === '/favicon.ico'; 40 41 if (isThemeStatic) { 42 e.respondWith(cacheFirst(e.request)); 43 } 44 // ÐÑÑ Ð¾ÑÑалÑное (HTML, игÑовÑе каÑÑинки, API) â не ÑÑогаем â бÑаÑÐ·ÐµÑ Ñам 45}); 46 47async function cacheFirst(request) { 48 const cache = await caches.open(CACHE); 49 const cached = await cache.match(request); 50 if (cached) return cached; 51 try { 52 const response = await fetch(request); 53 if (response.ok) cache.put(request, response.clone()); 54 return response; 55 } catch { 56 return new Response('', { status: 503 }); 57 } 58}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.