From 59cc89dbe96914c8517b32ae3c708d8785c14407 Mon Sep 17 00:00:00 2001 From: cliffhall Date: Wed, 30 Apr 2025 17:31:58 -0400 Subject: [PATCH] Fix the inspector caching problem * I've noticed that on a new version of the inspector, I have to go to the browser's devtools panel and clear site data then reload the page. * The assets are hashed and immutable, so caching should be allowed for them * The index.html file is the problem, because if cached, it will point to old assets, and therefore needs to have caching turned forf * This PR adds appropriate headers to the index.html and assets that are served. --- client/bin/client.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/client/bin/client.js b/client/bin/client.js index d30cc70..7179e19 100755 --- a/client/bin/client.js +++ b/client/bin/client.js @@ -9,10 +9,34 @@ const __dirname = dirname(fileURLToPath(import.meta.url)); const distPath = join(__dirname, "../dist"); const server = http.createServer((request, response) => { - return handler(request, response, { + const handlerOptions = { public: distPath, rewrites: [{ source: "/**", destination: "/index.html" }], - }); + headers: [ + { + // Ensure index.html is never cached + source: "index.html", + headers: [ + { + key: "Cache-Control", + value: "no-cache, no-store, max-age=0", + }, + ], + }, + { + // Allow long-term caching for hashed assets + source: "assets/**", + headers: [ + { + key: "Cache-Control", + value: "public, max-age=31536000, immutable", + }, + ], + }, + ], + }; + + return handler(request, response, handlerOptions); }); const port = process.env.PORT || 6274;