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,
},
},