From fd19295feac1224c540a8faf960ea6a45cf007ec Mon Sep 17 00:00:00 2001 From: scamiv <6170744+scamiv@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:00:11 +0100 Subject: [PATCH] Cache the shared app shell HTML --- index.html | 1 - nginx.conf | 14 +++----- src/client/Main.ts | 1 - src/client/Matchmaking.ts | 30 ++++++++++++++++- src/server/GamePreviewRoute.ts | 4 +-- src/server/Master.ts | 17 +++++++--- src/server/RenderHtml.ts | 33 +++++++++++++++--- tests/server/RenderHtml.test.ts | 60 +++++++++++++++++++++++++++++++++ vite.config.ts | 1 - 9 files changed, 138 insertions(+), 23 deletions(-) create mode 100644 tests/server/RenderHtml.test.ts diff --git a/index.html b/index.html index c6a0f11d1..ebb12432d 100644 --- a/index.html +++ b/index.html @@ -56,7 +56,6 @@ ", + "utf8", + ); + + process.env.GIT_COMMIT = "first"; + const first = await getAppShellContent(htmlPath); + + process.env.GIT_COMMIT = "second"; + const second = await getAppShellContent(htmlPath); + + expect(first).toContain('"first"'); + expect(second).toBe(first); + expect(second).not.toContain('"second"'); + }); + + test("sets shared-cache headers for the app shell", () => { + const headers = new Map(); + const response = { + setHeader(name: string, value: string) { + headers.set(name, value); + }, + } as any; + + setAppShellCacheHeaders(response); + + expect(headers.get("Cache-Control")).toBe( + "public, max-age=0, s-maxage=300, stale-while-revalidate=86400", + ); + expect(headers.get("Content-Type")).toBe("text/html"); + }); +}); diff --git a/vite.config.ts b/vite.config.ts index eefc073c2..e53544896 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -101,7 +101,6 @@ export default defineConfig(({ mode }) => { inject: { data: { gitCommit: JSON.stringify("DEV"), - instanceId: JSON.stringify("DEV_ID"), ...htmlAssetData, }, },