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