⚡ بررسی و بهینهسازی کارایی پروژه لاراول
📌 مقدمه
لاراول به طور پیشفرض فریمورک سریعی است، اما با بزرگ شدن پروژه یا افزایش کاربران، نیاز به بهینهسازی عملکرد برای حفظ سرعت و کاهش مصرف منابع ضروری میشود. در این مقاله به تکنیکهایی برای افزایش سرعت، کاهش بار روی سرور و بهبود تجربه کاربر میپردازیم.
🧠 ۱. فعالسازی کش (Caching)
📁 Cache کردن کوئریها و دادهها:
php$posts = Cache::remember('posts', 60, function () {
return Post::all();
});
⏱️ باعث کاهش درخواستهای مکرر به دیتابیس میشود.
⚙️ سیستمهای پشتیبانی شده:
-
Redis
-
Memcached
-
File (پیشفرض)
در .env
:
iniCACHE_DRIVER=redis
📄 ۲. استفاده از Route Cache
bashphp artisan route:cache
سرعت بارگذاری مسیرها رو تا چند برابر افزایش میده!
برای حذف کش مسیرها:
bashphp artisan route:clear
🧰 ۳. بهینهسازی Autoloader
bashcomposer install --optimize-autoloader --no-dev
در محیط production همیشه از این گزینه استفاده کن.
🧹 ۴. حذف سرویسهای غیرضروری در config/app.php
مثلاً اگر از broadcast استفاده نمیکنی، BroadcastServiceProvider
رو کامنت کن.
🧪 ۵. استفاده از Eager Loading به جای Lazy Loading
مثال:
php// بد: Lazy Loading
$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name;
}
// خوب: Eager Loading
$posts = Post::with('user')->get();
باعث کاهش تعداد کوئریها (N+1 Problem) میشود.
📂 ۶. فشردهسازی Assetها (CSS/JS)
استفاده از ابزار Laravel Mix:
bashnpm run prod
این دستور فایلهای CSS و JS را minify و optimize میکند.
🪪 ۷. استفاده از Queues برای عملیات سنگین
برای ارسال ایمیل، آپلود فایل، یا گزارشگیری:
phpMail::to($user)->queue(new WelcomeMail());
و در .env
:
iniQUEUE_CONNECTION=database
حتماً باید
queue:work
در پسزمینه اجرا شود.
🚫 ۸. حذف Debugbar در Production
Laravel Debugbar فقط برای توسعه مناسبه. در محیط production غیرفعالش کن.
در composer.json
:
json"require-dev": {
"barryvdh/laravel-debugbar": "^3.0"
}
🔒 ۹. اپتیمایز کردن دیتابیس
-
ایندکس روی ستونهایی که جستجو زیاد روشون انجام میشه
-
استفاده از
EXPLAIN
برای بررسی کوئریها -
استفاده از ابزارهایی مثل Laravel Telescope یا Clockwork برای مانیتورینگ
🔍 ۱۰. استفاده از ابزارهای مانیتورینگ
ابزار | کاربرد |
---|---|
Laravel Telescope | بررسی درخواستها و کوئریها |
Laravel Debugbar | آنالیز زمان اجرا در توسعه |
Blackfire.io | پروفایل حرفهای PHP/Laravel |
Horizon | مانیتورینگ صفهای Redis |
✅ جمعبندی نهایی
با رعایت این موارد:
-
بار سرور کاهش پیدا میکنه
-
زمان پاسخدهی کمتر میشه
-
تجربه کاربری بهبود پیدا میکنه
🔧 چکلیست نهایی بهینهسازی
-
فعالسازی route cache
-
استفاده از eager loading
-
نصب queue برای ایمیل و کارهای سنگین
-
حذف debugbar در production
-
minify کردن assetها
-
تنظیم Redis یا Memcached
-
بهینهسازی کوئریها
اگر خواستی این مقاله رو بهصورت قالب HTML، Markdown، یا حتی PDF برای مستندسازی داخلی یا وبلاگت آماده کنم، فقط کافیه بگی 😎