خب تیتر خیلی قشنگی هستش. ولی در عمل کار خیلی سختی هستش. من توی این مقاله میخوام چند تا تکنیک که تست کردم خودم برای افزایش سرعت لاراول رو بهتون بگم. من از لاراول ۵.۸ دارم استفاده میکنم روی سروری با php 7.3
معمولا جواب مناسب گرفتم.
۱. minify کردن js و css :
خب این اولین کار هستش. در صورتی که از laravel mix استفاده میکنید (اگه هم نمیکنید بهتر هستش که استفاده کنید :) ) با این دستور میتونید این کار رو انجام بدید:
npm run production
۲. minify کردن html:
برای این کار من از این پکیج استفاده میکنم. آموزش نصبش به این صورت هستش:
دستور زیر رو وارد کنید:
composer require renatomarinho/laravel-page-speed
بعد دستور زیر رو:
php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"
بعد داخل، app/http/Kernel.php در آرایه middleware این مقادیر رو وارد کنید:
\RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class, \RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class, \RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class, \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class, \RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class, \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class, \RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
۳. استفاده از hhvm:
اگه برای پروژتون سرور اختصاصی یا vps دارین، این وبسرور رو حتما تست کنید. فوقالعادست.
۴. کش فایلهای config:
php artisan config:cache
برای پاک کردن کش هم:
php artisan config:clear
۵. کش کردن route ها:
php artisan route:cache
برای پاک کردن کش هم:
php artisan route:clear
۶. بهینهسازی Classmap ها:
php artisan optimize
۷. حذف Service های بلااستفاده
۸. بهینه سازی composer autoload:
composer dumpautoload -o
۹. انتخاب سیستم Cache مناسب:
من ۲ تا روش رو تست کردم برای کش. memcache و redis.
برای زمانهایی که دادههای هر خونه کشمون (key) زیاد هستش، redis فوقالعادست و در غیر این صورت memcache. به طور عادی در پروژههای سبک، memcache گزینه سریعتری هستش برای افزایش سرعت لاراول.
۱۰. کش کردم Query ها:
یکی از مهمترین بخشهای افزایش سرعت لاراول، کش کردن همین Query ها هستش. برای این منظور این کد را در نظر بگیرید:
$posts = Cache::remember('index.posts', 30, function() {return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
به همین سادگی. کلید index.posts رو چک میکنه، اگه تایمش کمتر از ۳۰ بود و موجود بود این مقدار رو از کش میخونه وگرنه میادش کوئری رو اجرا میکنه.
۱۱. استفاده از CDN:
برای این منظور بهترین گزینه Cloudflare هستش. ولی از اونجایی که تحریم هستیم، من ابر آروان و پارسپک رو توصیه میکنم. (از ابر آروان استفاده کردم و در زمینهی CDN راضی هستم، سرورهام همگی در پارسپک هستند و از کیفیت خدمات سروریشون بسیار بسیار بالا رضایت دارم)
۱۲. یکی کردن فایلهای CSS :
خب این هم روش خوبیه که با همون laravel mix میتونید انجامش بدید:
mix.styles([ 'public/css/vendor/normalize.css', 'public/css/styles.css' ], 'public/css/all.css');
۱۳. استفاده از Laravel Debuger:
احتمالا اسمش رو زیاد شنیده باشید و ازش زیاد استفاده کرده باشین. یک روش بسیار خوب برای اینکه سرعتتون رو بازبینی کنید.
۱۴. استفاده از Swoole:
من از این روش استفاده نکردم تا به حال، ولی بر اساس داکیومنتها بسیار بسیار سرعت رو بالا میبره. انشالا در صورتی که در پروژهی بعدی استفاده کردم اطلاع میدهم.
در صورتی که روشهای دیگهای در این زمینه بلد هستید لطفا به من هم بگید 🙂
عالی ، خسته نباشی
ممنون، پیروز باشید