From c01b08ef1b4dea2b03fcc30a31afeb170b64557a Mon Sep 17 00:00:00 2001 From: TheFlow Date: Fri, 24 Oct 2025 18:40:49 +1300 Subject: [PATCH] fix(cache): FINAL FIX - prevent caching at Express level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified Express static file middleware to exclude admin files from caching. Root cause: Express was setting aggressive 1-year cache headers for ALL .js files. Nginx changes alone weren't sufficient because Express overrides them when proxying. Three-layer solution: 1. Service Worker (v0.1.2): NEVER cache /js/admin/, /api/, /admin/ 2. Express Middleware: no-cache headers for admin paths BEFORE general JS caching 3. Nginx: Prefix match location block for /js/admin/ with no-cache headers This ensures NO level of the stack caches admin files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/server.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server.js b/src/server.js index b5447798..ba00bb07 100644 --- a/src/server.js +++ b/src/server.js @@ -95,6 +95,12 @@ app.use((req, res, next) => { res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'); res.setHeader('Pragma', 'no-cache'); } + // Admin JS/HTML files: NEVER cache (always fetch fresh) + else if (path.startsWith('/js/admin/') || path.startsWith('/admin/')) { + res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); + res.setHeader('Pragma', 'no-cache'); + res.setHeader('Expires', '0'); + } // CSS and JS files: Longer cache (we use version parameters) else if (path.endsWith('.css') || path.endsWith('.js')) { res.setHeader('Cache-Control', 'public, max-age=31536000, immutable'); // 1 year