{
	# پنل مدیریت Caddy لازم نیست — سطح حمله کمتر
	admin off
}

:80 {
	root * /srv
	encode zstd gzip

	# فایل‌های هش‌دار بیلد: کش بلندمدت بی‌رحم — ولی هرگز fallback به index.html نداشته باشند؛
	# پاسخ 200ٔ HTML برای یک مسیر /assets/* نبوده (مثلاً هنگام پنجرهٔ تعویض کانتینر در استقرار)
	# توسط CDN (WCDN، سیاست SMART) با همین هدر immutable یک سال کش می‌شود و اسکریپت ماژول
	# را برای همه بازدیدکننده‌ها می‌شکند. فایل ناموجود در assets باید 404 بدهد، نه HTML.
	@assets path /assets/*
	handle @assets {
		file_server
	}

	# هر مسیر دارای پسوند فایل (فونت، تصویر، نقشه، آیکون، …): فقط فایل واقعی سرو می‌شود؛
	# فایل ناموجود ۴۰۴ می‌گیرد، نه HTML اسپا — خزنده‌ها (گوگل) پاسخ HTML برای فونت/تصویر
	# را «خطای منابع» ثبت می‌کنند و CDN هم همان HTML را کش می‌کند
	@filelike path_regexp fileext \.[a-zA-Z0-9]{2,5}$
	handle @filelike {
		file_server
	}

	# مسیریابی SPA — فقط مسیرهای بدون پسوند (مسیرهای اپ) به index.html برمی‌گردند
	handle {
		try_files {path} /index.html
		file_server
	}

	# index.html و fallback اسپا: بدون کش مرورگر تا هر استقرار فوری دیده شود
	header Cache-Control "no-cache"
	# فایل‌های ثابت (فونت/تصویر): یک ساعت کش مرورگر
	header @filelike Cache-Control "public, max-age=3600"
	# دارایی‌های هش‌دار: کش یک‌ساله
	header @assets Cache-Control "public, immutable, max-age=31536000"
}
