diff --git a/frontend/Caddyfile b/frontend/Caddyfile index 4e214cb..285e417 100644 --- a/frontend/Caddyfile +++ b/frontend/Caddyfile @@ -7,15 +7,23 @@ root * /srv encode zstd gzip - # مسیریابی SPA — مسیرهای ناشناخته به index.html برمی‌گردند - try_files {path} /index.html - file_server - - # فایل‌های هش‌دار بیلد: کش بلندمدت بی‌رحم + # فایل‌های هش‌دار بیلد: کش بلندمدت بی‌رحم — ولی هرگز fallback به index.html نداشته باشند؛ + # پاسخ 200ٔ HTML برای یک مسیر /assets/* نبوده (مثلاً هنگام پنجرهٔ تعویض کانتینر در استقرار) + # توسط CDN (WCDN، سیاست SMART) با همین هدر immutable یک سال کش می‌شود و اسکریپت ماژول + # را برای همه بازدیدکننده‌ها می‌شکند. فایل ناموجود در assets باید 404 بدهد، نه HTML. @assets path /assets/* - header @assets Cache-Control "public, immutable, max-age=31536000" + handle @assets { + file_server + } + + # مسیریابی SPA — مسیرهای ناشناختهٔ غیرasset به index.html برمی‌گردند + handle { + try_files {path} /index.html + file_server + } # بقیه (از جمله index.html و fallback اسپا): بدون کش مرورگر تا هر استقرار فوری دیده شود @notassets not path /assets/* header @notassets Cache-Control "no-cache" + header @assets Cache-Control "public, immutable, max-age=31536000" }