fix(frontend): مسیرهای /assets/* هرگز به index.html برنگردند — مسمومشدن کش CDN
در پنجرهٔ تعویض کانتینر فرانتاند، درخواستِ هشِ جدید که در dist کانتینرِ در حال اجرا نبود با fallback اسپا پاسخ 200ٔ text/html میگرفت؛ CDN (WCDN، SMART) همین پاسخ HTML را زیر URL فایل جاوااسکریپت با هدر immutable یکساله کش میکرد و اسکریپت ماژول برای همهٔ بازدیدکنندهها میشکست (سایت روی پریلودر قفل میشد). حالا فایل ناموجود در assets واقعاً 404 میدهد که کش نمیشود.
This commit is contained in:
+13
-5
@@ -7,15 +7,23 @@
|
||||
root * /srv
|
||||
encode zstd gzip
|
||||
|
||||
# مسیریابی SPA — مسیرهای ناشناخته به index.html برمیگردند
|
||||
# فایلهای هشدار بیلد: کش بلندمدت بیرحم — ولی هرگز fallback به index.html نداشته باشند؛
|
||||
# پاسخ 200ٔ HTML برای یک مسیر /assets/* نبوده (مثلاً هنگام پنجرهٔ تعویض کانتینر در استقرار)
|
||||
# توسط CDN (WCDN، سیاست SMART) با همین هدر immutable یک سال کش میشود و اسکریپت ماژول
|
||||
# را برای همه بازدیدکنندهها میشکند. فایل ناموجود در assets باید 404 بدهد، نه HTML.
|
||||
@assets path /assets/*
|
||||
handle @assets {
|
||||
file_server
|
||||
}
|
||||
|
||||
# مسیریابی SPA — مسیرهای ناشناختهٔ غیرasset به index.html برمیگردند
|
||||
handle {
|
||||
try_files {path} /index.html
|
||||
file_server
|
||||
|
||||
# فایلهای هشدار بیلد: کش بلندمدت بیرحم
|
||||
@assets path /assets/*
|
||||
header @assets Cache-Control "public, immutable, max-age=31536000"
|
||||
}
|
||||
|
||||
# بقیه (از جمله index.html و fallback اسپا): بدون کش مرورگر تا هر استقرار فوری دیده شود
|
||||
@notassets not path /assets/*
|
||||
header @notassets Cache-Control "no-cache"
|
||||
header @assets Cache-Control "public, immutable, max-age=31536000"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user