23 lines
1.0 KiB
JavaScript
23 lines
1.0 KiB
JavaScript
/* 数控销售工作台 离线缓存 Service Worker
|
|
作用:托管(http/https)时缓存本应用,支持断网使用与“添加到桌面/安装为应用”。
|
|
单文件 HTML 本身即可独立运行,此 SW 仅用于离线加速与桌面安装。 */
|
|
const CACHE = "cnc-wb-v1";
|
|
self.addEventListener("install", (e) => { self.skipWaiting(); });
|
|
self.addEventListener("activate", (e) => { e.waitUntil(self.clients.claim()); });
|
|
self.addEventListener("fetch", (e) => {
|
|
if (e.request.method !== "GET") return;
|
|
const url = new URL(e.request.url);
|
|
if (url.origin !== location.origin) return; // 仅缓存同源资源
|
|
e.respondWith((async () => {
|
|
const cache = await caches.open(CACHE);
|
|
const cached = await cache.match(e.request);
|
|
try {
|
|
const res = await fetch(e.request);
|
|
if (res && res.status === 200) cache.put(e.request, res.clone());
|
|
return res;
|
|
} catch (_) {
|
|
return cached || new Response("离线且本地无缓存", { status: 503, statusText: "Offline" });
|
|
}
|
|
})());
|
|
});
|