Files

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" });
}
})());
});