[ Laravel ] أسرار تحسين أداء وسرعة تطبيقات Laravel: من 200 استعلام بطيء لاستجابة في لمح البصر

ahmedhegazy

عضو جديد
21 فبراير 2023
10
3
49
جمهورية مصر العربية
السلام عليكم ورحمة الله وبركاته إخواني وأحبائي في نقطة التطوير

كتير من المطورين لما بيبنوا مشاريع بـ Laravel وبتشتغل معاهم سريعة جداً على الـ Localhost، بيتفاجئوا أول ما الموقع يترفع لايف ويدخل عليه 50 أو 100 مستخدم إن الموقع بدأ يهنّج، الاستجابة بتاخد 4 أو 5 ثواني، واستهلاك الـ CPU في السيرفر ضرب 100%!

السبب في 90% من الحالات مش الفريم وورك خالص، لكن هي طريقة التعامل مع الـ Database والاستعلامات غير المحسوبة. النهاردة هشارك معاكم أهم خطوات تسريع تطبيقات Laravel عشان يطير في ثواني.

1. حل مشكلة الـ N+1 Query القاتلة بـ Eager Loading
أشهر مشكلة بتدمر الأداء في Eloquent هي إنك تقرأ بيانات العلاقات داخل حلقة تكرارية:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
تقدر كمان تفعل التنبيه الصارم في بيئة التطوير بوضع السطر ده في AppServiceProvider:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

2. حدد الأعمدة اللي محتاجها بس (Select Specific Columns)
بدل ما تسحب الجدول كله وفيه أعمدة نصوص ضخمة ومحتوى مقالات وإنت محتاج الاسم والعنوان بس:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

3. تخزين الكاش الذكي باستخدام Redis
البيانات اللي مش بتتغير كل دقيقة (زي إعدادات الموقع، الإحصائيات، القوائم الرئيسية) مفيش أي داعي تسحبها من الداتابيز في كل زيارة:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

4. نقل العمليات الثقيلة للـ Queues & Background Jobs
إياك تخلي المستخدم يستنى في شاشة التحميل لحد ما تبعت له إيميل تفعيل أو تعالج صورة أو تطلع تقرير PDF:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

5. أوامر التشغيل الأساسية في بيئة الإنتاج (Production Caching)
أول ما ترفع كودك على سيرفر الإنتاج، لازم ترن الأوامر دي لتوليد ملفات كاش سريعة للراوتات والإعدادات والقوالب:
Bash:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

خلاصة التجربة:
تطبيق الخطوات البسيطة دي هيحول موقعك من موقع بطيء وثقيل لمنصة قوية بتتحمل آلاف الزيارات المتزامنة بكل ثبات وخفة.

شاركونا تجاربكم مع Laravel، وإيه أكبر مشكلة أداء واجهتكم وإزاي حلتوها؟ بالتوفيق للجميع!
 

AdBlock Detected

We apologize, but you must disable AdBlock to view this site.

We rely on advertisements to support the continuity of the site and provide the best content.