Tên tài khoản:
Mật khẩu:
Đăng Nhập
if('serviceWorker' in navigator){ navigator.serviceWorker.register('/sw.js') .then(reg => console.log('service worker registered')) .catch(err => console.log('service worker not registered', err)); }
importScripts('https://arc.io/arc-sw-core.js') const staticCacheName = 'site-static-v2'; const assets = [ 'https://fonts.googleapis.com/css?family=Quicksand', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', ]; // install event self.addEventListener('install', evt => { evt.waitUntil( caches.open(staticCacheName).then((cache) => { console.log('caching shell assets'); cache.addAll(assets); }) ); }); // activate event self.addEventListener('activate', evt => { evt.waitUntil( caches.keys().then(keys => { return Promise.all(keys .filter(key => key !== staticCacheName) .map(key => caches.delete(key)) ); }) ); }); // When we change the name we could have multiple cache, to avoid that we need to delet the old cache, so with this function we check the key that is our cache naming, if it is different from the actual naming we delete it, in this way we will always have only the last updated cache. // fetch event self.addEventListener('fetch', evt => { evt.respondWith( caches.match(evt.request).then(cacheRes => { return cacheRes || fetch(evt.request); }) ); });
<link rel="manifest" href="/js/manifest.webmanifest"> <script src="/js/app.js" type="text/javascript"></script>
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) /** * @param {Request} request */ async function handleRequest(request) { const response = await fetch(request) var headers = new Headers(); for (var kv of response.headers.entries()) { headers.append(kv[0], kv[1]); } const url = request.url headers.set("Content-Type", get_content_type(url)) headers.set("x-julia-test", "edited headers!") response.headers = headers return new Response(response.body, { status: response.status, statusText: response.statusText, headers: headers}) return response } function get_content_type(url) { if (url.endsWith(".svg")) { return "image/svg+xml" } else if (url.endsWith(".png")) { return "image/png" } else if (url.endsWith(".jpg")) { return "image/jpg" } else if (url.endsWith(".css")) { return "text/css" } else if (url.endsWith(".pdf")) { return "application/pdf" } else if (url.endsWith(".js")) { return "application/javascript" } else if (url.endsWith(".json")) { return "application/json" } else if (url.endsWith(".xml")) { return "text/xml" } else if (url.endsWith(".txt")) { return "text/plain; charset=UTF-8" } else if (url.endsWith(".webmanifest")) { return "application/manifest+json" } else { return "text/html; charset=UTF-8" } }