Send Cache-Control: no-store on every page to defeat upstream caching
Every page here is personalized (session, coin balance, owned games) — no intermediate proxy should ever cache one. Traced a report of a stale UI (missing header content that had already shipped) to caching somewhere between the app and the client — nginx isn't even on this VM, the user's reverse proxy (Nginx Proxy Manager) lives on a separate one I can't inspect. Rather than debug an opaque hop I don't control, close it from this side: explicit no-store on every HTML/API response except /_next/static, which keeps its normal long-lived immutable caching since those filenames are content-hashed by the build. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QcXH24ky6zjk2UyK5oZUPH
This commit is contained in:
1 parent
e682c7df13
commit
43347bc31b
1 file changed
+14
@@ -5,6 +5,20 @@ const nextConfig: NextConfig = {
|
||||
// native .node binaries, not its JS loader, causing a segfault in
|
||||
// production. Deploying with the full node_modules via `next start` is
|
||||
// simple enough for a single-VM deployment.
|
||||
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
// Every page is personalized (session, wallet balance, owned
|
||||
// games) — an intermediate proxy (nginx, a CDN) has no business
|
||||
// caching any of it. Static assets under /_next/static are
|
||||
// content-hashed by the build and are explicitly excluded here so
|
||||
// they keep their own long-lived caching.
|
||||
source: "/((?!_next/static).*)",
|
||||
headers: [{ key: "Cache-Control", value: "no-store" }],
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
Reference in new issue
Block a user