Improve Service Worker (#8089)

* Update service-worker.js

* Update serviceWorker.ts

* Update serviceWorker.ts
This commit is contained in:
颖逸 2023-04-25 10:29:26 +08:00 committed by GitHub
parent f9d71002fc
commit 99c4f1f890
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 11 deletions

View file

@ -1,5 +1,5 @@
// 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" ||
!("caches" in window) || !("fetch" in window)) {
return;
@ -7,8 +7,8 @@ export const registerServiceWorker = (scriptURL: string) => {
// REF https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration
window.navigator.serviceWorker
.register(scriptURL, {
scope: "./",
type: "module",
scope,
type: workerType,
}).then(registration => {
registration.update();
}).catch(e => {

View file

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