From d289b924a5047f10e70ab8f7e51d64d42dd87040 Mon Sep 17 00:00:00 2001 From: na-trium-144 <100704180+na-trium-144@users.noreply.github.com> Date: Fri, 2 May 2025 10:36:27 +0900 Subject: [PATCH 1/4] add sw.js --- sw.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 sw.js diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..2e7e672 --- /dev/null +++ b/sw.js @@ -0,0 +1,41 @@ + +const BUILD_VERSION = 1 + +const files = [ +"/aboutus", +"/disclaimer", +"/errorMessage/error1.txt", +"/errorMessage/error2.txt", +"/errorMessage/error3.txt", +"/errorMessage/error4.txt", +"/errorMessage/error5.txt", +"/errorMessage/error6.txt", +"/howToUse", +"/", +"/lz-string.min.js", +"/notion", +"/resources/favicon-utcode.png", +"/resources/utc-logo.svg", +"/script.js", +"/style.css", +] + +self.addEventListener("install", (e) => { + e.waitUntil((async () => { + const c = await self.caches.open("1") + await c.addAll(files) + })()) + self.skipWaiting() +}) + +self.addEventListener("fetch", (e) => { + e.respondWith((async () => { + const c = await self.caches.open("1") + const res = await c.match(e.request) + if(res){ + return res + }else { + return fetch(e.request) + } + })) +}) From c4976b6e681c713b7a88b6585358b6883065e3a5 Mon Sep 17 00:00:00 2001 From: na-trium-144 <100704180+na-trium-144@users.noreply.github.com> Date: Fri, 2 May 2025 11:29:49 +0900 Subject: [PATCH 2/4] material icon font fix --- index.html | 10 +++--- material-icons.css | 36 ++++++++++++++++++++ script.js | 5 ++- sw.js | 82 ++++++++++++++++++++++++++-------------------- 4 files changed, 93 insertions(+), 40 deletions(-) create mode 100644 material-icons.css diff --git a/index.html b/index.html index f141a0a..9e8c307 100644 --- a/index.html +++ b/index.html @@ -8,12 +8,14 @@ name="description" content="東京大学前期課程特化の履修登録支援サービス。使いやすい電子シラバスを提供します。時間割機能と必修自動登録機能で空きコマの把握も一瞬で行えます。" /> - + + diff --git a/material-icons.css b/material-icons.css new file mode 100644 index 0000000..24663ce --- /dev/null +++ b/material-icons.css @@ -0,0 +1,36 @@ +/* https://developers.google.com/fonts/docs/material_icons?hl=ja */ + +@font-face { + font-family: "Material Icons"; + font-style: normal; + font-weight: 400; + src: + local("Material Icons"), + local("MaterialIcons-Regular"), + url(https://cdn.jsdelivr.net/npm/@material-design-icons/font@0.14.15/material-icons.woff2) + format("woff2"); +} +.material-icons { + font-family: "Material Icons"; + font-weight: normal; + font-style: normal; + font-size: 24px; /* Preferred icon size */ + display: inline-block; + line-height: 1; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + white-space: nowrap; + direction: ltr; + + /* Support for all WebKit browsers. */ + -webkit-font-smoothing: antialiased; + /* Support for Safari and Chrome. */ + text-rendering: optimizeLegibility; + + /* Support for Firefox. */ + -moz-osx-font-smoothing: grayscale; + + /* Support for IE. */ + font-feature-settings: "liga"; +} diff --git a/script.js b/script.js index ebf98b1..f6fb846 100644 --- a/script.js +++ b/script.js @@ -38,7 +38,10 @@ * @prop {HTMLTableRowElement} tableRow */ -/** DBのバージョン(年, セメスター)を表す文字列 */ +/** + * DBのバージョン(年, セメスター)を表す文字列 + * あわせて sw.js も更新すること + */ const LAST_UPDATED = "2025S"; /** * 同セメスター内のバージョンを示す整数値. diff --git a/sw.js b/sw.js index 2e7e672..26b9522 100644 --- a/sw.js +++ b/sw.js @@ -1,41 +1,53 @@ - -const BUILD_VERSION = 1 +/** + * バージョンを示す整数値. + * sw.js以外の任意のhtml,jsファイルに変更がある場合この値を加算すること + * ファイルの追加がある場合は下の files も更新する + */ +const CACHE_VERSION = 1; const files = [ -"/aboutus", -"/disclaimer", -"/errorMessage/error1.txt", -"/errorMessage/error2.txt", -"/errorMessage/error3.txt", -"/errorMessage/error4.txt", -"/errorMessage/error5.txt", -"/errorMessage/error6.txt", -"/howToUse", -"/", -"/lz-string.min.js", -"/notion", -"/resources/favicon-utcode.png", -"/resources/utc-logo.svg", -"/script.js", -"/style.css", -] + "/aboutus", + "/disclaimer", + "/errorMessage/error1.txt", + "/errorMessage/error2.txt", + "/errorMessage/error3.txt", + "/errorMessage/error4.txt", + "/errorMessage/error5.txt", + "/errorMessage/error6.txt", + "/howToUse", + "/", + "/lz-string.min.js", + "/notion", + "/resources/favicon-utcode.png", + "/resources/utc-logo.svg", + "/script.js", + "/style.css", + "/material-icons.css", + "https://cdn.jsdelivr.net/npm/@material-design-icons/font@0.14.15/material-icons.woff2", +]; self.addEventListener("install", (e) => { - e.waitUntil((async () => { - const c = await self.caches.open("1") - await c.addAll(files) - })()) - self.skipWaiting() -}) + e.waitUntil( + (async () => { + const c = await self.caches.open("main"); + await c.addAll(files); + })(), + ); +}); self.addEventListener("fetch", (e) => { - e.respondWith((async () => { - const c = await self.caches.open("1") - const res = await c.match(e.request) - if(res){ - return res - }else { - return fetch(e.request) - } - })) -}) + if (e.request.url.startsWith("https://www.googletagmanager.com")) { + return; + } + e.respondWith( + (async () => { + const c = await self.caches.open("main"); + const res = await c.match(e.request); + if (res) { + return res; + } + console.warn(`${e.request.url} is not in cache in sw.js`); + return fetch(e.request); + })(), + ); +}); From f4d02a43a6243e12a7850dcc02b542766336d543 Mon Sep 17 00:00:00 2001 From: na-trium-144 <100704180+na-trium-144@users.noreply.github.com> Date: Fri, 2 May 2025 11:48:13 +0900 Subject: [PATCH 3/4] comment --- sw.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sw.js b/sw.js index 26b9522..03b4750 100644 --- a/sw.js +++ b/sw.js @@ -2,8 +2,11 @@ * バージョンを示す整数値. * sw.js以外の任意のhtml,jsファイルに変更がある場合この値を加算すること * ファイルの追加がある場合は下の files も更新する + * + * ちなみにこのバージョン番号はどこからも使われていないが、 + * sw.jsを1文字以上変更することでサービスワーカーが更新される仕様のため置いている */ -const CACHE_VERSION = 1; +const VERSION = 1; const files = [ "/aboutus", From 58f562589fb2100b0dfa286acd86602ba844b6e4 Mon Sep 17 00:00:00 2001 From: na-trium-144 <100704180+na-trium-144@users.noreply.github.com> Date: Fri, 2 May 2025 12:01:38 +0900 Subject: [PATCH 4/4] =?UTF-8?q?cache=E3=82=92=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=94=E3=81=A8=E3=81=AB=E5=88=A5=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sw.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/sw.js b/sw.js index 03b4750..64b8f37 100644 --- a/sw.js +++ b/sw.js @@ -2,9 +2,6 @@ * バージョンを示す整数値. * sw.js以外の任意のhtml,jsファイルに変更がある場合この値を加算すること * ファイルの追加がある場合は下の files も更新する - * - * ちなみにこのバージョン番号はどこからも使われていないが、 - * sw.jsを1文字以上変更することでサービスワーカーが更新される仕様のため置いている */ const VERSION = 1; @@ -32,19 +29,31 @@ const files = [ self.addEventListener("install", (e) => { e.waitUntil( (async () => { - const c = await self.caches.open("main"); + const c = await self.caches.open("main" + VERSION); await c.addAll(files); })(), ); }); - +self.addEventListener("activate", (e) => { + // 古いキャッシュを削除する + e.waitUntil( + (async () => { + const keys = await self.caches.keys(); + await Promise.all( + keys + .filter((key) => key !== "main" + VERSION) + .map((key) => self.caches.delete(key)), + ); + })(), + ); +}); self.addEventListener("fetch", (e) => { if (e.request.url.startsWith("https://www.googletagmanager.com")) { return; } e.respondWith( (async () => { - const c = await self.caches.open("main"); + const c = await self.caches.open("main" + VERSION); const res = await c.match(e.request); if (res) { return res;