راهنمای جامع بهینهسازی Response Headers و تنظیمات CDN آروان
آخرین بروزرسانی: 8 دسامبر 2025
1. نسخه پروتکل و فشردهسازی
وضعیت فعلی
HTTP/1.1 200 OK
Content-Encoding: gzip
alt-svc: h3=":443"; ...
پیشنهاد بهبود
HTTP/2 / HTTP/3 در سمت کاربر
توی response header فقط HTTP/1.1 رو میبینی که معمولاً ارتباط origin ↔ CDN هست.
مهم اینه که سمت کاربر (مرورگر) از طریق آروان روی HTTP/2 یا HTTP/3 سرو کنه (که با alt-svc: h3 مشخصه احتمالاً فعاله).
داخل پنل آروان:
- مطمئن شو گزینههای HTTP/2 و HTTP/3 (QUIC) فعال هستن.
Brotli بهجای gzip برای کاربر نهایی
الان:
Content-Encoding: gzip
بهتر:
روی CDN آروان Brotli رو برای فایلهای متنی (HTML, CSS, JS) فعال کن.
معمولاً آروان خودش برای origin → CDN از gzip استفاده میکنه، ولی برای client میتونه Brotli بده.
⚠️ نکته مهم: در وردپرس لازم نیست پلاگین gzip فعال باشه اگر CDN فشردهسازی رو هندل میکنه؛ دوتا فشردهسازی پشتسر هم نداشته باش.
2. Cache-Control و Expires
وضعیت فعلی
Cache-Control: public, max-age=2592000
Expires: Mon, 05 Jan 2026 11:40:02 GMT
max-age=2592000 یعنی حدود ۳۰ روز کش.
مشکل احتمالی
این هدرها روی همهچیز (حتی HTML اصلی) اعمال بشن، ممکنه:
- کاربر نسخه قدیمی صفحه رو تا مدت طولانی ببینه
- بهخصوص برای صفحات داینامیک (سبد خرید، داشبورد، صفحه پرداخت و…)
پیشنهاد ساختار بهینه کش
برای HTML (صفحات داینامیک / مهم)
بهتره کش سمت مرورگر کوتاهتر باشه، مثلاً:
Cache-Control: no-cache, must-revalidate
اما:
- میتونی توی آروان برای HTML کش CDN رو نگه داری (مثلاً ۵–۱۵ دقیقه)
- ولی به مرورگر بگی
no-cacheکه با سرور چک کنه
برای فایلهای استاتیک (CSS, JS, تصاویر، فونتها)
اینجا اتفاقاً max-age=2592000 یا حتی بیشتر (۱ سال) ایدهآله:
Cache-Control: public, max-age=31536000, immutable
فقط حواست باشه:
از versioning (query string مثل style.css?ver=1.2.3 یا نام فایل نسخهدار) استفاده کنی که اگر فایل عوض شد، URL عوض بشه.
چطور در وردپرس & آروان تنظیمش کنیم؟
وردپرس
برای استاتیکها از پلاگینهایی مثل WP Rocket, LiteSpeed Cache یا W3 Total Cache استفاده کن و headerهای Cache-Control رو جدا برای HTML و assets تنظیم کن.
آروان
توی پنل CDN، قابلیتهای زیر رو استفاده کن:
- Override Cache-Control برای انواع MIME
- تنظیم Cache Rules بر اساس path (مثلاً
/wp-content/uploads/*)
3. هدرهای امنیتی
✅ چیزهای خوب فعلی
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
اینها همگی خوبه 👍
⚠️ چیزهایی که کم داریم و بهتره اضافه کنیم
HSTS (Strict-Transport-Security)
خیلی مهمه برای اجباریکردن HTTPS از سمت مرورگر.
مثال خوب:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
این هدر رو بهتره از طریق آروان ست کنی (HTTP → HTTPS redirect + HSTS).
Content-Security-Policy (CSP)
قویترین دفاع در برابر XSS، ولی تنظیمش باید با دقت انجام بشه.
مثال ساده (شروع کار):
Content-Security-Policy: default-src 'self'; img-src 'self' data: https:; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:;
⚠️ نکته: برای سایتهای وردپرسی که کلی اسکریپت از پلاگینها میاد، معمولاً از حالت report-only شروع میکنن تا لاگ ببینن و بعد سفتش میکنن.
Permissions-Policy (قبلاً Feature-Policy)
برای محدود کردن دسترسی به APIهای مرورگر (میکروفون، دوربین، geolocation و غیره).
مثال:
Permissions-Policy: geolocation=(), microphone=(), camera=()
Referrer-Policy
الان strict-origin-when-cross-origin خوبه و معمولاً نیاز به تغییر نداره، مگر سناریوی خاصی.
نحوه پیادهسازی
این هدرها رو میتونی:
روش 1: از طریق پلاگینهای امنیتی وردپرس:
- iThemes Security
- Wordfence
- HTTP Headers
روش 2: از طریق تنظیمات CDN آروان (تب Security / Rules)
4. Vary Header
Vary: Accept-Encoding
این خوبه (برای gzip/br).
⚠️ نکته: اگر برای زبان، کوکی یا device نوع محتوای متفاوت میفرستی، باید Vary گسترش داده بشه (مثلاً Vary: Accept-Encoding, Accept-Language)، ولی اگر چنین چیزی نداری، همین حالت خوبه و حتی سادهتر برای کشه.
5. زمان و تاریخها
Date: Sat, 06 Dec 2025 11:40:02 GMT
X-Google-Crawl-Date: Sat, 06 Dec 2025 11:40:02 GMT
X-Google-Crawl-Date معمولاً هدر واقعی سرور نیست، احتمالاً این خروجی از ابزار تست (مثل Fetch & Render گوگل یا سرویسهای دیگه) هست.
چیز خاصی برای بهینهسازی این دو نداری؛ مهم اینه که ساعت سرور با NTP درست sync باشه (که روی هاستت مدیریت میشه).
6. نکات مخصوص وردپرس + آروان
چند نکته عملی که مستقیم به ستاپ شما مربوط میشه:
پلاگین کش درست و تنظیمشده
از یکی از اینها استفاده کن (فقط یکی!):
- WP Rocket ⭐ (توصیه میشه)
- LiteSpeed Cache (اگر سرور LiteSpeed است)
- W3 Total Cache
تنظیم کن که:
- HTML: کش سمت مرورگر کوتاه و قابل ریولیدیشن
- CSS/JS/Images: کش بلندمدت + minify + combine (در صورت نیاز)
حذف هدرهای اضافی یا لودهنده
مثلاً:
X-Powered-By: PHP/…X-PingbackServer
اینها اطلاعات اضافه درباره ساختار سایت میدن و بهتره حذف بشن.
از پلاگین امنیتی وردپرس یا یک قطعه کد در functions.php میشه اینها رو حذف کرد.
تنظیم کش روی آروان
در پنل آروان:
برای مسیرهای استاتیک
کش بلندمدت فعال کن:
/wp-content/uploads/*/wp-content/themes/*/wp-content/plugins/*
برای مسیرهای داینامیک
کش رو غیرفعال کن:
/wp-admin/*/cart/*,/checkout/*,/my-account/*(اگر فروشگاه هست)
استفاده از Arvan WAF و Firewall Rules
اگر ترافیک حساسی (پرداخت، احراز هویت، داشبورد کاربری) دارید، WAF آروان رو روشن و روی پروفایلهای مناسب تنظیم کن.
✅ جمعبندی تغییرات پیشنهادی (چکلیست سریع)
- فعالبودن HTTP/2 و HTTP/3 در آروان
- فعالکردن Brotli برای کاربران نهایی در CDN
- جداسازی Cache-Control برای HTML و فایلهای استاتیک
- تنظیم Strict-Transport-Security
- تنظیم Content-Security-Policy (ترجیحاً از report-only شروع کن)
- تنظیم Permissions-Policy
- حذف هدرهای لودهنده مثل
X-Powered-By - استفاده از پلاگین کش مناسب در وردپرس
- تنظیم Cache Rules در آروان برای مسیرهای مختلف
🔗 منابع مرتبط
نویسنده: تیم فنی XPay
تاریخ ایجاد: 8 دسامبر 2025
وضعیت: 🟢 فعال