المتطلبات المسبقة: حساب Cloudflare مع DNS الـ domain مُدار بواسطة Cloudflare. الخطة المجانية تغطي معظم الإعدادات؛ بعضها يتطلب Pro أو أعلى.

لماذا Cloudflare يُغيّر كل شيء لأداء Laravel

تطبيق Laravel على خادم وحيد في فرانكفورت سيكون له تأخير 180–220ms لمستخدمي دبي. نفس التطبيق خلف Cloudflare مع caching صحيح يُخدَّم من edge node دبي — 8–12ms. هذا الفارق بين موقع يشعر بالفورية وآخر يشعر بالثقل.

أكثر خطأ شائع: المطورون يُعدّون Cloudflare في proxy mode لكن لا يُعدّون cache rules، فلا شيء يُخزَّن سوى الـ static assets. تطبيق Laravel ما زال يعالج كل طلب. هذا الدليل يحل ذلك بالكامل.

الجزء 1: الإعدادات الأساسية

SSL/TLS: اضبط وضع التشفير على Full (strict). لا تستخدم "Flexible" أبداً على تطبيق Laravel في الإنتاج.

إعدادات السرعة: Auto Minify (HTML+CSS+JS): ON. Brotli: ON. Early Hints: ON (Pro). HTTP/3: ON. Rocket Loader: OFF لتطبيقات Laravel — يكسر Alpine.js والـ frameworks التي تُهيَّأ عند DOM ready.

الجزء 2: Cache Rules — الجزء الحاسم

السلوك الافتراضي لـ Cloudflare يُخزّن الملفات ذات الامتدادات الثابتة المعروفة فقط. صفحات HTML — مسارات Laravel — لا تُخزَّن افتراضياً. لتخزين HTML، يجب إعداده صراحةً.

Rule 1: تجاوز Cache للمسارات المصادق عليها

When:
  URI Path contains "/admin" OR "/dashboard" OR "/api"
  OR Cookie contains "laravel_session"
Then: Cache Status: Bypass

Rule 2: تخزين الـ Static Assets (TTL طويل)

When: URI Path ends with .css OR .js OR .webp OR .woff2
Then:
  Cache Everything
  Edge Cache TTL: 1 month

Rule 3: تخزين الصفحات العامة

When: URI starts with "/en/" OR "/ar/"
Then:
  Cache Everything
  Edge Cache TTL: 1 hour
  Vary: Accept-Language

الجزء 3: Cache Headers من جانب Laravel

// في middleware
if ($request->isMethodSafe() && !$request->user()) {
    $response->headers->set('Cache-Control',
        "public, max-age=3600, s-maxage=14400"
    );
    $response->headers->set('Vary', 'Accept-Language, Accept-Encoding');
}

الجزء 4: مسح Cache عند النشر

curl -X POST "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/purge_cache"   -H "Authorization: Bearer ${CF_API_TOKEN}"   -H "Content-Type: application/json"   --data '{"purge_everything":true}'

أخطاء شائعة يجب تجنبها

  • تخزين صفحات المستخدمين المصادق عليهم — دائماً ضع قاعدة bypass للـ session cookie أولاً
  • عدم ضبط Vary headers — المواقع متعددة اللغات يجب أن تُضمّن Vary: Accept-Language
  • نسيان CSRF tokens في HTML المُخزَّن — انقل جلب CSRF token لـ JavaScript (AJAX) بدل تضمينه في HTML
  • تخزين أخطاء 500 — أضف rule لـ bypass عند response status 500

هل تريدنا نُعدّ هذا لتطبيقك؟

نُعدّ ونُدير Cloudflare لجميع تطبيقات Laravel التي نبنيها. تدقيق مجاني خلال 48 ساعة.