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

21 مهر 1396 - وب

افزایش سرعت لاراول می‌تونه با چند تا کار ساده انجام بشه. این راهنما موارد عمومی رو پوشش می‌ده و با چند روش ساده افزایش عملکرد رو شاهد خواهیم بود. ضمناً قرار نیست که وارد جزئیات وب اپلیکیشن‌های ویژه یا روش‌های زمان‌بر و پیچیده بشه.

نکته اینکه قرارم بر این بوده که هرجا بتونم توی هر موضوعی متنی رو به فارسی در وب منتشر کنم حتی اگه ترجمه باشه. این یادداشت ترجمهٔ ساده از مقالهٔ Speeding up  Laravel in Simple Steps هست که یه راهنمای خیلی ساده و جمع و جوره.

استفاده از Cookie به جای فایل برای Sessionها

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

  1. فایل .env داخل پروژه رو باز کنید.
  2. متغیر  SESSION_DRIVER رو پیدا کنید.
  3. مقدار این متغیر رو به cookie  تغییر بدید.

به این شکل

چرا استفاده از کوکی به جای فایل عملکرد رو ارتقا می‌ده؟

جواب خیلی ساده ست. معمولاً خوندن اطلاعات یه کوکی سریعتر نسبت به خوندن از یک فایل سریع‌تر هست.

کوکی و فایل‌های ثابت

اگه براتون میلی ثانیه‌ها خیلی مهم هستند یه کار دیگه هم هست که توی این زمینه می‌تونه کمک کنه. می‌تونیم فایل‌های ثابت مثل عکس‌ها، استایل‌ها و جاواسکریپ رو روی دامنه‌های دیگه‌ای که دارای کوکی نیستند ارائه یا سرو کنیم. به یاد داشته باشید که اگه از گوگل آنالیتیکز برای اون دامین استفاده می‌کنیم، گوگل آنالتیتیکز به اون صفحه کوکی اضافه می‌کنه.

بنچمارک

برای بنچمارک تاثیر استفاده از کوکی به جای فایل من یه از سایت لوکال و تازه نصب شده استفاده کردم که کاربر در درونش لاگین کرده و کامند زیر برای بنچمارک استفاده شده.

نتیجه برای استفاده از درایور فایل برای سشن به صورت زیره.

و برای استفاده از درایور کوکی برای سشن هم به صورت زیره.

همون طوری که مشخصه نتایج متفاوته و اگه از کوکی استفاده کنیم تقریباً نزدیک به 6.54 ریکوئست بیشتر در یک ثانیه می‌تونیم سرو کنیم.

کش کردن route و config

راه دیگه‌ٔ افزایش سرعت لاراول کش کردن روت و کانفیگ‌ها ست. یادتون باشه شما فقط زمانی می‌تونید روت رو کش کنید که تمام روت‌ها به کنترلرها اشاره کنند.

روش انجام این کار هم بسیار ساده ست.

  1. با ترمینال وارد پوشهٔ پروژه بشید.
  2. برای کش کردن کانفیگ دستور php artisan config:cache رو بزنید.
  3. برای کش کردن روت دستور php artisan route:cache رو بزنید.

بنچمارک

توی این بنچمارک از یه اپلیکیشن تازه نصب شده دیگه استفاده شده که ده تا Resource Controllers داره. برای بنچمارک هم از دستور زیر استفاده شده.

نتیجهٔ بنچمارک قبل از کش کردن روت و کانفیگ:

نتیجهٔ بنچمارک بعد از کش کردن:

نتایج ممکنه خیلی متفاوت باشه ولی توی این نتایج ما تونستیم 21,85 ریکوئست بیشتری رو در ثانیه سرو کنیم و واقعاً ارزشش رو داره.

چرا کش کردن روت و کانفیگ عملکرد رو ارتقا می‌ده؟

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

 

فراموش نکنید پس از هر تغییری در روت و کانفیگ‌های پروژه حتماً‌ کش رو پاک کنیم و در صورت نیاز دوبار کش کنیم.

Artisan Optimize

کار دیگه‌ای که باعث افزایش سرعت لاراول می‌شه اینه که از کامند php artisan optimize استفاده کنیم. این کامند کلاس لودرها و به طور کلی تمام اپلیکیشن رو بهینه‌سازی می‌کنه. البته ارتقا و تغییر فاحشی در عملکرد ایجاد نمی‌کنه ولی به هر حال تاثیر اندک خودش رو داره. در اینجا بنچمارکی هم برای این روش نداریم چون تغییر زیادی در نتایج بنچمارک قابل مشاهده نیست.

ضمن اینکه فراموش نکنید که در لاراول ۵.۵ و نسخه‌های بعد این کامند در حال حذف شدنه.


اگه واقعاً دنبال یک تغییر جدی در سرعت لاراول هستید آموزش‌های زیادی هست برای روش‌های پیشرفته‌تر هست که یکی از اون‌‌ها Performant Laravel هست که کریس فیدائو ساخته شده

برچسب‌ها