سایت لاراول (laravel) از سال ۲۰۱۱ وارد عرصه وبمسترینگ و طراحی سایت شد و از اون زمان یه گزینه بسیار محبوب برای توسعه و گسترش اپلیکیشن‌های متمرکز بر تجارت و بیزنس از جمله سیستم‌های مدیریت اطلاعات (که عموماً به عنوان سیستم های مدیریت اطلاعات تجارت یا business information management systems شناخته میشن) و پلتفرم‌های تجارت الکترونیک (eCommerce) شد. یکی از جنبه‌ها و ویژگی‌های این محبوبیت، بهینه‌سازی عملکرد لاراول و افزایش سرعت لاراول هست که به توسعه‌ دهندگان این امکان رو میده که عملکرد و سرعت برنامه‌های Laravel رو تنظیم کنن. امروز در این مقاله قصد داریم به آموزش نکاتی درباره افزایش سرعت لاراول بپردازیم.

در این مقاله، ما چندین نکته مهم درباره بهینه‌سازی عملکرد برنامه‌های لاراول ارائه دادیم و باور داریم که این نکات به توسعه‌دهندگان لاراول که مسئول نگهداری و پشتیبانی از برنامه‌های تجاری مجهز به Laravel هستن، کمک بزرگی می‌کنن.

اهمیت بهینه‌سازی عملکرد لاراول در کسب و کار

طرح و ساختار ارتباطات تجاری و مجموع برنامه‌های مرتبط، این اطمینان رو به توسعه‌دهندگان و برنامه‌نویسان میده که اونها بتونن با حداقل تلاش یه برنامه قدرتمند رو ایجاد کنن. با این حال، برنامه همچنان فضا برای بهینه‌سازی داره که میتونه برای تنظیم عملکرد Laravel استفاده بشه تا عملکرد هموار و روان بعد از گسترش برنامه رو تضمین کنه.

در واقع عملکرد (Performance) و بهینه‌سازی (Optimization) دو فاکتور مهم و اصلی هستن که موفقیت هر برنامه و اپلیکیشن تجاری رو تعیین می‌کنن. در این زمینه، تضمین عملکرد اپلیکیشن لاراول، توانایی مهمی هست که هر شخص برنامه‌نویسی باید به مشتریان خودش ارائه بده. از اون جایی که لاراول اغلب برای ایجاد سیستم‌های اطلاعات تجاری مورد استفاده قرار میگیره، عملکرد اپلیکیشن‌های مجهز به لاراول، پیامدهای و نتایج مهم و بسزایی در موفقیت تجارت و کسب و کار داره. در بسیاری از موارد، سیستم‌های مدیریت اطلاعات که از تصمیمات اتخاذشده برای لایه‌های مدیریتی پشتیبانی می‌کنن، باید همواره عملکردی سریع و بالا داشته باشن.

بهینه سازی عملکرد لاراول

نکات افزایش سرعت سایت لاراول

قبل از اقدام به استفاده از نکات برای افزایش سرعت لاراول و بهبود عملکرد این برنامه، باید موارد زیر برای اپلیکیشن لاراول نصب شده بر روی سرور وب شما، تنظیم شده باشه:

  • Laravel 5.5
  • PHP 7.1
  • MySQL

برای این که خیالتون راحت باشه که مشکلات سطح سرور در این روند مانعتون نمیشن، ما بهتون پیشنهاد می‌کنیم که از هاستینگ Cloudways Laravel cloud استفاده کنین. این هاستینگ به مشکلات سطح سرور رسیدگی میکنه و یه میزبان عالی برای پروژه میزبان لاروال هست. برای ایجاد یه حساب در Cloudways ثبت‌نام کنین و به صورت رایگان ازش استفاده کنین.

خب الان میریم سراغ نکات و راهکارهایی که بهتون در افزایش سرعت لاراول کمک می کنن.

۱. ذخیره سازی پیکربندی

لاراول یه فرمان بسیار جالب به نام Artisan Cache Config فراهم کرده که برای افزایش و تقویت عملکرد بسیار کاربردی و مفید هست. کاربرد اصلی این فرمان به صورت زیر هست:

            
        <?php artisan config:cache
            
        

وقتی که شما پیکربندی رو ذخیره می‌کنین، تغییراتی که ایجاد می‌کنین هیچ تأثیری ندارن. اگه قصد دارین که پیکربندی رو مجدداً آپلود و refresh کنین، فقط یه بار دیگه فرمان بالا رو اجرا کنین. به منظور پاک کردن ذخیره پیکربندی از فرمان زیر استفاده کنین:

            
        php artisan config:clear
            
        

پاک کردن ذخیره پیکربندی به افزایش سرعت سایت لاراول کمک میکنه.

برای بهینه‌سازی بیشتر اپلیکیشن، شما می‌تونین از OPcache که کد برنامه نویسی PHP رو ذخیره میکنه، استفاده کنین تا نیازی به کامپایل مجدد (recompile) اون نداشته باشین.

۲. ذخیره سازی مسیرها

ذخیره سازی مسیرها یه ویژگی بهینه سازی مهم و اصلی هست، مخصوصاً برای برنامه‌هایی که پیکربندی‌ها و مسیرهای زیادی دارن. ذخیره مسیرها یه آرایه (array) ساده هست و این آرایه به دلیل بارگذاری و لود شدن سریعترش به افزایش سرعت عملکرد لاراول کمک میکنه. به این منظور از فرمان زیر استفاده کنین:

            
        php artisan route:cache
            
        

به خاطر داشته باشین که هر بار که فایل‌های مسیرها (routes) یا پیکربندی‌ها تغییر پیدا می‌کنن، فرمان رو اجرا کنین. در غیر این صورت، Laravel، تغییرات قدیمی رو از حافظه پنهان (cache) بارگیری و لود میکنه. برای پاک کردن فایل‌های مسیرهایی که ذخیره شدن، از فرمان زیر استفاده کنین:

            
        php artisan route:clear
            
        

3. پاک کردن سرویس‌های بدون استفاده

در زمینه بهینه‌سازی سرعت لاراول، یه نکته مهم اینه که تمامی سرویس‌ها و خدمات از طریق پیکربندی بارگیری نشن. همواره به یاد داشته باشین که سرویس‌های بدون استفاده در فایل‌های پیکربندی رو غیرفعال کنین. قبل از غیرفعال کردن، نظرات و کامنت‌های خودتون رو به پشتیبانان این سرویس‌ها بگین.

۴. بهینه‌سازی classmap

حتی یه اپلیکیشن لاراول سطح متوسط دارای تعداد زیادی فایل هست و این به دلیل اینه که لاراول عادت داره فایل‌های مختلفی رو برای درخواست‌‌های متعدد بخونه و وقتی این اتفاق میفته حجم فایل‌ها زیاد میشه و مانع بهبود عملکرد سایت laravel میشه. یه ترفند ساده و راحت اینه که تمامی فایل‌هایی رو که این درخواست‌های متعدد رو شامل میشن، جمع آوری کنین و سپس همگی اونها رو در تنها یه فایل جا بدین. از این طریق برای تمامی درخواست‌ها فقط دیگه یه فایل وجود داره که اونها رو میخونه و بارگیری میکنه. برای انجام این کار، از فرمان زیر استفاده کنین:

            
        php artisan optimize --force

            
        

5. بارگیری خودکار بهینه‌ساز composer

در واقع استفاده از composer یه ایده خوب به حساب میاد، چون هم اپلیکیشن رو اسکن میکنه و هم ارتباط یک به یکی با هر کدوم از طبقه‌‌بندی‌ها و فایل‌ها ایجاد میکنه. از فرمان زیر استفاده کنین و به صورت خودکار بهینه‌ساز composer رو بارگیری کنین:

            
        composer dumpautoload -o

            
        

6. محدودکردن libraries

لاراول دارای تعداد بسیار زیادی libraries هست که بهبود عملکرد اون رو کند می‌کنن. نکته خوبی که وجود داره اینه که می‌تونیم تمامی libraries رو در یه برنامه و اپلیکیشن جا بدیم. اما در برابر این نکته خوب، ایرادی که وجود داره، سطح بالای drag هست که اپلیکیشن تجربه میکنه و کل این تجربه سرعت رو کاهش میده.

بخاطر همین مهمه که تمامی داده‌های libraries که درون برنامه‌ها قرار گرفتن رو مجدداً مرور و بازبینی کنین. می‌تونین بدون یه library هم عمل کنین و اون رو از قسمت config/app.php پاک کنین و سرعت اپلیکیشن لاراول رو افزایش بدین. این کار رو همچنین می‌تونین در قسمت composer.json انجام بدین.

۷. استفاده از کامپایلر JIT یا JIT compiler

ترجمه کردن کد PHP برای bytecode یا کدبایتی و سپس اجرای اون، یه فرآیند متمرکز بر منبع یا resource-intensive هست. در واقع به همین دلیل هست که برای اجرای زیر برنامه‌های C لازمه از یه موتوری مانند Zend Engine استفاده بشه. این فرآیند باید هر بار که برنامه اجرا میشه، تکرار بشه. به منظور کاهش زمان، مهمه که این فرآیند تنها یه بار تکرار بشه. اینجاست که اثبات میشه کامپایلرهای Just-In-Time یا کامپایلرهای JIT بسیار کاربردی و مفید هستن. برای برنامه‌های لاراول، کامپایلر JIT توصیه شده، HHVM هست.

۸. انتخاب درایور Fast Cache و Session

برای تنظیم بهینه عملکرد لاراول، بهترین مسیر، ذخیره کردن بخش‌های session و cache در RAM هست. سریع‌ترین درایورهای session و cache برای افزایش سرعت لاراول، Memcached هست.

درایور اصلی برای تغییر دادن درایور session معمولاً در app/config/session.php قرار گرفته و درایور اصلی برای تغییر دادن درایور cache در app/config/cache.php واقع شده.

۹. ذخیره‌سازی نتایج جستجوها

ذخیره کردن نتایج جستجوهایی که به طور مکرر اجرا میشن، یه راه عالی برای بهینه‌سازی سرعت لاراول هست. برای انجام این کار، از عملکرد remember که به صورت زیر هست، استفاده کنین:

            
        $posts = Cache::remember('index.posts', 30, function()

{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
            
        

10. استفاده از Eager Loading برای داده‌ها

لاراول یه ORM عالی برای بررسی کردن پایگاه‌های داده فراهم میکنه. این ORM که با نام Eloquent شناخته میشه، الگوها و مدل‌هایی رو ایجاد میکنه که جدول‌های پایگاه‌های داده رو از توسعه‌دهندگان جمع آوری میکنه. با استفاده از ساختارهای ساده، توسعه‌دهندگان از Eloquent استفاده می‌کنن تا تمامی عملیات‌های CRUD در PHP رو بررسی کنن. زمانی که Eloqent از Eager Loading استفاده میکنه، تمامی مدل‌های مربوط به موضوع رو در پاسخ به جستجوی ابتدایی بازیابی میکنه. و این کار به پاسخ اپلیکیشن افزوده می‌شود.

اکنون به مقایسه Lazy Loading و Eager Loading می‌پردازیم:

جستجوی Lazy Loading به صورت زیر هست:

            
        $books = App\Book::all();

foreach ($books as $book) {

echo $book->author->name;}            
        

در مقابل، جستجوی Eager Loading به این شکل هست:

            
        $books = App\Book::with('author')->get();

foreach ($books as $book) {

echo $book->author->name;
}            
        

11. استفاده از ویژگی‌های Precompile

به منظور تنظیم عملکرد لاراول، توسعه‌دهندگان اغلب کد رو در فایل‌های جداگانه‌ای توزیع می‌کنن. اگرچه این کار کد رو تمیز و قابل کنترل نگه میداره، اما به تولید کارآمد و مفید کمکی نمیکنه. برای کمک به توسعه‌دهندگان در این زمینه، لاراول یه فرمان ساده ارائه میده:

            
        php artisan optimize
php artisan config:cache            
        
            
        php artisan optimize
php artisan config:cache
php artisan route:cache