Переглянути джерело

Improve Service Worker (#8089)

* Update service-worker.js

* Update serviceWorker.ts

* Update serviceWorker.ts
颖逸 2 роки тому
батько
коміт
99c4f1f890
2 змінених файлів з 16 додано та 11 видалено
  1. 3 3
      app/src/util/serviceWorker.ts
  2. 13 8
      app/stage/service-worker.js

+ 3 - 3
app/src/util/serviceWorker.ts

@@ -1,5 +1,5 @@
 // https://github.com/siyuan-note/siyuan/pull/8012
 // https://github.com/siyuan-note/siyuan/pull/8012
-export const registerServiceWorker = (scriptURL: string) => {
+export const registerServiceWorker = (scriptURL: string, scope: string = "/", workerType: WorkerType = "module") => {
     if (!("serviceWorker" in navigator) || typeof (navigator.serviceWorker) === "undefined" ||
     if (!("serviceWorker" in navigator) || typeof (navigator.serviceWorker) === "undefined" ||
         !("caches" in window) || !("fetch" in window)) {
         !("caches" in window) || !("fetch" in window)) {
         return;
         return;
@@ -7,8 +7,8 @@ export const registerServiceWorker = (scriptURL: string) => {
     // REF https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration
     // REF https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration
     window.navigator.serviceWorker
     window.navigator.serviceWorker
         .register(scriptURL, {
         .register(scriptURL, {
-            scope: "./",
-            type: "module",
+            scope,
+            type: workerType,
         }).then(registration => {
         }).then(registration => {
         registration.update();
         registration.update();
     }).catch(e => {
     }).catch(e => {

+ 13 - 8
app/stage/service-worker.js

@@ -7,8 +7,6 @@ const INITIAL_CACHED_RESOURCES = [
     "/stage/icon.png",
     "/stage/icon.png",
     "/stage/loading-pure.svg",
     "/stage/loading-pure.svg",
     "/stage/loading.svg",
     "/stage/loading.svg",
-    "/stage/manifest.webmanifest",
-    "/stage/service-worker.js",
     "/stage/build/fonts/JetBrainsMono-Regular.woff",
     "/stage/build/fonts/JetBrainsMono-Regular.woff",
     "/stage/protyle/js/lute/lute.min.js",
     "/stage/protyle/js/lute/lute.min.js",
     "/stage/protyle/js/protyle-html.js"
     "/stage/protyle/js/protyle-html.js"
@@ -41,19 +39,26 @@ self.addEventListener("fetch", event => {
 
 
     // Don't care about other-origin URLs.
     // Don't care about other-origin URLs.
     if (url.origin !== location.origin &&
     if (url.origin !== location.origin &&
-        url.origin !== "https://assets.b3logfile.com") {
+        url.origin !== "https://assets.b3logfile.com"
+    ) {
         return;
         return;
     }
     }
 
 
     // Don't care about anything else than GET.
     // Don't care about anything else than GET.
     if (event.request.method !== 'GET' ||
     if (event.request.method !== 'GET' ||
-        event.request.destination === "document") {
+        event.request.destination === "document"
+    ) {
         return;
         return;
     }
     }
-    // Don't care about widget requests.
-    if (!url.pathname.startsWith("/stage/") && !url.pathname.startsWith("/appearance/") &&
-        "/favicon.ico" !== url.pathname &&
-        url.href.indexOf("https://assets.b3logfile.com/avatar/") === -1) {
+
+    // Don't care about other requests.
+    if (!url.pathname.startsWith("/stage/") &&
+        !url.pathname.startsWith("/appearance/boot/") &&
+        !url.pathname.startsWith("/appearance/emojis/") &&
+        !url.pathname.startsWith("/appearance/langs/") &&
+        !url.href.startsWith("https://assets.b3logfile.com/avatar/") &&
+        url.pathname !== "/favicon.ico"
+    ) {
         return;
         return;
     }
     }