اشترك و تابع

تطوير الويب

image

تحسين أداء Laravel: كيفية جعل تطبيقاتك فائقة السرعة 🚀

يُعتبر Laravel إطار عمل PHP قوي وأنيق، ولكن مع نمو تطبيقك، قد تلاحظ بطء في تحميل الصفحات أو استخدام مرتفع لموارد الخادم. لا تقلق! باستخدام التحسينات الصحيحة، يمكنك جعل تطبيق Laravel الخاص بك سريعًا كالصاروخ. ⚡

دعنا نستعرض بعض النصائح العملية وأفضل الممارسات لتحسين أداء Laravel وجعله يعمل بسلاسة.


1️⃣ تحسين استعلامات قاعدة البيانات كالمحترفين

قاعدة بيانات بطيئة = تطبيق Laravel بطيء. إليك كيفية جعله أسرع:

✅ استخدام التحميل المُبكر (with()) بدلاً من استعلامات N+1

يُعد ORM الخاص بـ Laravel Eloquent رائعًا، ولكن إذا لم تكن حذرًا، قد يُنشئ مئات الاستعلامات بشكل غير ضروري.

❌ مثال سيء (مشكلة استعلام N+1):

$users = User::all(); foreach ($users as $user) { echo $user->posts->count(); } 

🔴 هذا يستدعي المنشورات الخاصة بكل مستخدم على حدة، مما يؤدي إلى استعلامات متعددة.

✅ مثال جيد (استخدام التحميل المُبكر):

$users = User::with('posts')->get(); foreach ($users as $user) { echo $user->posts->count(); } 

🟢 الآن، يجلب Laravel جميع المنشورات في استعلام واحد، مما يجعله أسرع بكثير!

✅ استخدام الفهرسة على الأعمدة كثيرة الاستخدام

ALTER TABLE users ADD INDEX idx_email (email); 

يساعد هذا في تسريع الاستعلامات التي تبحث في الحقول المفهرسة مثل البريد الإلكتروني.

✅ استخدام التخزين المؤقت لقاعدة البيانات (remember())

بدلاً من الوصول إلى قاعدة البيانات في كل مرة، يمكنك تخزين النتائج في الذاكرة المؤقتة.

$users = Cache::remember('users_list', 600, function () { return User::all(); }); 

هذا يخزن النتائج لمدة 10 دقائق، مما يقلل من الضغط على قاعدة البيانات.


2️⃣ استخدام التخزين المؤقت في Laravel

التخزين المؤقت هو أفضل أداة لتسريع تطبيقات Laravel.

✅ تفعيل التخزين المؤقت للإعدادات والمسارات

php artisan config:cache php artisan route:cache 

هذه الأوامر تخزن الإعدادات والمسارات في تنسيق مُسبق التهيئة، مما يقلل من وقت التنفيذ.

✅ استخدام التخزين المؤقت للمشاهدات (Blade)

Laravel يخزن المشاهدات المترجمة تلقائيًا، ولكن يمكنك مسحها يدويًا إذا لزم الأمر:

php artisan view:clear 

✅ استخدام Redis أو Memcached لتخزين أسرع

بدلاً من التخزين المؤقت على شكل ملفات، استخدم Redis أو Memcached لأداء أفضل.

تثبيت Redis:

composer require predis/predis 

ثم قم بتعديل ملف .env:

CACHE_DRIVER=redis SESSION_DRIVER=redis QUEUE_CONNECTION=redis 

3️⃣ تحسين الأوامر والوظائف في Laravel (Queues & Jobs)

بدلاً من تشغيل كل شيء بشكل متزامن، يمكنك نقل المهام الثقيلة (مثل إرسال الإيميلات، الإشعارات، والتقارير) إلى طوابير (Queues).

✅ تفعيل الطوابير (Queues)

php artisan queue:work --daemon 

يقوم هذا بمعالجة المهام في الخلفية مما يُحسن من زمن الاستجابة.

✅ استخدام Redis أو SQS للمهام المؤجلة

في ملف .env:

QUEUE_CONNECTION=redis 

هذا يضمن أن Laravel لا يعتمد على الطوابير القائمة على الملفات البطيئة.


4️⃣ تقليل الحمل على الوسطاء (Middleware)

الوسطاء يضيفون طبقة إضافية من المعالجة. احذف أي وسطاء غير مستخدمين في ملف app/Http/Kernel.php:

protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, ]; 

ابقَ فقط على ما هو ضروري لتطبيقك.

5️⃣ استخدام Laravel Octane للحصول على أداء فائق السرعة

Laravel Octane يُحسن من أداء تطبيقات Laravel عن طريق تشغيلها في الذاكرة باستخدام Swoole أو RoadRunner.

✅ تثبيت Laravel Octane:

composer require laravel/octane 

ثم قم بتشغيل:

php artisan octane:start 

هذا يلغي الحاجة إلى إعادة تهيئة Laravel مع كل طلب، مما يجعله سريعًا جدًا!


6️⃣ تحسين الملفات الثابتة (CSS، JS، الصور)

تسريع تحميل الواجهة الأمامية باستخدام هذه النصائح:

✅ تقليل حجم ملفات CSS و JavaScript

استخدم Laravel Mix في webpack.mix.js:

mix.js('resources/js/app.js', 'public/js').minify() .sass('resources/sass/app.scss', 'public/css').minify(); 

ثم نفذ:

bash
CopyEdit
npm run prod 

✅ استخدام التحميل البطيء للصور (Lazy Loading)

<img src="placeholder.jpg" data-src="real-image.jpg" class="lazyload"> 

استخدم Lazysizes.js للتعامل مع التحميل البطيء.

✅ تفعيل ضغط Gzip

في ملف .htaccess:

<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript </IfModule> 

هذا يقلل من حجم الاستجابة ويسرع تحميل الصفحات.


الخلاصة:

بتطبيق هذه التحسينات، سيكون تطبيق Laravel الخاص بك أسرع وأكثر سلاسة وكفاءة.

🔑 مراجعة سريعة:

  • ✅ تحسين استعلامات قاعدة البيانات (استخدام with(), الفهرسة، التخزين المؤقت)
  • ✅ استخدام التخزين المؤقت (config:cache, route:cache, Redis)
  • ✅ استخدام الطوابير (Queues) والوظائف المؤجلة (Jobs)
  • ✅ إزالة الوسطاء غير الضروريين
  • ✅ استخدام Laravel Octane لتحسين السرعة
  • ✅ تحسين الملفات الثابتة (تقليل حجمها، استخدام Gzip، التحميل البطيء)

🚀 باتباعك لهذه الخطوات، ستلاحظ تحسينًا كبيرًا في الأداء.