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

  • حسین کرمی
  • 15 بهمن 1400
10 Tips for Laravel Performance Optimization in 2022

لاراول از سال 2011 برای توسعه اپلیکیشن‌های بک‌اند بسیار معروف شد و توانست موفقیت بسیار خوبی در ایجاد یک جامعه برنامه‌نویسان قوی داشته باشد. این فریمورک ابزار‌های بسیار خوبی برای توسعه اپلیکیشن‌های بک‌اند (Backend) سمت سرور ارائه می‌دهد و توسعه‌دهندگان می‌توانند اپلیکیشن‌های بسیار قدرتمندی را با این فریمورک توسعه بدهند.

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

 

بیشتر بخوانید:

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

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

برای اینکه ببینید سرعت و عملکرد وب سایت شما در چه وضعیتی است، می‌توانید از دو ابزار Google PageSpeed Insight و GTMetrix کمک بگیرید. این دو ابزار بسیار مفید برای بررسی سئو تکنیکال سایت هستند.

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

اکنون می‌دانیم که بهینه سازی سایت و اپلیکیشن تا چه میزان مهم و ضروری است. در پایین به 10 نکته مهم اشاره خواهیم کرد که توجه به آن‌ها می‌تواند در بهبود عملکرد (Performance) و سرعت سایت / اپلیکیشن شما تاثیر چشمگیری داشته باشد.

 

1. Config Caching

شاید بهترین ابزاری که ما برنامه‌نویسان بک‌اند برای افزایش سرعت سایت در اختیار داشته باشیم، استفاده از کشینگ (Caching) باشد. از Caching در لاراول  نیز می‌توانیم به صورت گسترده استفاده کنیم. یکی از دستورات جالب لاراول Artisan Cache Config است. با این دستور می‌توانیم تمام تنظیمات Config لاراول را کش کنیم. برای اینکار دستور زیر را اجرا کنید:

php artisan config:cache

اگر تغییری در تنظیمات Config ما رخ داد و نیاز بود که اطلاعات کش شده مجددا بروز رسانی شوند، دستور زیر را اجرا کنید:

php artisan config:clear

دستور بالا مجددا تنظیمات Config را کش کرده و اطلاعات بروز رسانی خواهند شد.

2. Route Caching

ابزار جذاب دیگر لاراول کش مسیر (Route Caching) است. همانطور که می‌دانید اطلاعات مسیر‌ها در دو فایل web.php و api.php ذخیره می‌شوند. ممکن است مسیر‌هایی که در این فایل تعریف کرده باشیم، کمی پیچیده باشد. هر زمان که سرور درخواست یک مسیر را داشته باشد، باید زمان زیادی صرف پیدا کردن آن مسیر و صدا زدن کنترلر و متد متناظر با آن شود. برای اینکه یافتن مسیر به حداقل زمان ممکن نیاز داشته باشد، لاراول پیشنهاد می‌دهد که از Route Caching استفاده کنید. برای استفاده از این قابلیت دستور زیر را اجرا کنید.

php artisan route:cache

اگر تغییری در مسیر‌های اپلیکیشن / سایت ما رخ داد، کافیست دستور زیر را اجرا کنیم تا مجددا فایل کش آن ساخته و بروز رسانی شود.

php artisan route:clear

 

3. بهینه سازی مدل ها (Database Model Optimization)

یکی از مهمترین مسائل برای بهبود سرعت سایت یا اپلیکیشن، بهینه بودن کوئری‌های دیتابیس است. مدل‌های دیتابیس در لاراول نسبت به Query Builder سرعت پایین‌تری دارند اما نمی‌توان آن را جایگزین مدل‌های دیتابیسی کرد. برای خوانایی و نظم بیشتر به مدل‌ها نیاز داریم. برای اینکه بتوانیم مدل‌های دیتابیس در لاراول را بهبود ببخشیم، باید سعی کنیم تا حد ممکن کوئری‌ها را محدود کنیم و از بازگشت همه نتایج در عمل Select کردن جلوگیری کنیم.

بگذارید یک مثال بزنیم. فرض کنید مدل PostComment دارای یک رابطه (Relation) با مدل Post به شکل زیر است.

public function post() { return $this->belongsTo(Post::class, 'post_id'); }

احتمالا کد بالا یک کد بهینه نباشد. زیرا شما با صدا زدن رابطه post از کامنت تمام ستون‌ها را از مدل Post فراخوانی می‌کنید، در صورتی که به احتمال قوی به همه ستون‌ها نیاز نداشته باشید. بهتر نیست به جای عمل Select * فقط آن ستون‌هایی که به آن‌ها نیاز داریم را برگردانیم؟ بگذارید همین کد را کمی تغییر دهیم.

public function post() { return $this->belongsTo(Post::class, 'post_id')->select(['id', 'title', 'slug']); }

بهتر شد نه؟ حال فقط ستون‌هایی که نیاز داریم بازگردانده می‌شود و ستون‌های بی استفاده بازگردانده نمی‌شوند. به این صورت می‌توانید سرعت بازگردانی نتایج را به صورت چشمگیری بهبود بدهید. این کار تاثیر مستقیمی بر روی فاکتور بسیار مهم TTFB (زمان مورد نیاز برای دریافت اولین بایت) می‌گذارد.

4. استفاده از With برای رابطه‌ها در Eloquent Model

همانطور که گفتیم، بهبود کوئری‌های دیتابیس تاثیر چشمگیری بر روی TTFB می‌گذارد و در افزایش سرعت اپلیکیشن لاراولی ما تاثیر بسیار زیادی دارد. یکی از نکاتی که باید به آن توجه کرد، استفاده از With برای ایجاد Relation ها است. به کد زیر دقت کنید.

$books = Book::all(); foreach ($books as $book) echo $book->author->name;

برای اینکه کد بالا را بهبود ببخشیم، بهتر بود به جای اینکه مدل Author در حلقه foreach صدا زده شود، در همان کوئری اولیه author را به رابطه اضافه می‌کردیم تا یک کوئری به جای چندین کوئری انجام شود. اینکار باعث کاهش زمان پاسخ سرور خواهد شد. باید همیشه این نکته را در نظر بگیریم که بهتر است تا جای ممکن از کوئری‌های کمتر برای انجام یک عمل خاص هنگام کار با دیتابیس انجام گیرد. بنابراین برای اینکه عمل Join را در دیتابیس انجام دهیم، می‌توانیم مدل Book را به کمک متد With، با Author جوین بزنیم.

$books = $books = Book::with('author')->get();; foreach ($books as $book) echo $book->author->name;

کد دوم از لحاظ سرعت و عملکرد بسیار بهتر عمل خواهد کرد.

 

5. کش نتایج کوئری‌های دیتابیس

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

کد زیر را ببینید.

$posts = Cache::remember('index.posts', 20, function() { return Post::with('comments', 'author')->get(); });

 

6. حذف Service Provider های بی کاربرد

در استفاده از فریمورک لاراول باید این نکته را بدانید که آن Provider هایی که استفاده‌ای ندارند را کامنت کنید. بنابراین فایل کانفیگ را یکبار بررسی نمایید و هر Service Provider که از آن استفاده ندارید را پاک کنید و یا کامنت کنید تا عملکرد اپلیکیشن / سایت خود را بهبود ببخشید.

 

7. ادغام فایل‌های Javascript و CSS

Laravel Mix نام یک پکیج برای ادغام فایل‌های Javascript و CSS می‌باشد. با این پکیج می‌توانید چندین فایل CSS یا Javascript را به یک فایل تبدیل کنید. مزیت ادغام فایل‌ها این است که کاربر برای دریافت اطلاعات صفحه وب شما نیاز به چندین درخواست جداگانه نخواهد داشت و با یک درخواست و دریافت آن فایل همه اطلاعات مورد نیاز برای لود صفحه را در اختیار خواهد داشت. این‌کار باعث لود سریعتر صفحات شما خواهد شد.

به کد زیر نگاه کنید.

mix.styles([ 'public/css/vendor/normalize.css', 'public/css/styles.css' ], 'public/css/all.css');

با اجرای کد بالا یک فایل all.css ساخته خواهد شد که دو فایل styles.css و normalize.css در هم ادغام شده‌اند. با این روش به راحتی می‌توانیم از فایل all.css در پروژه خود استفاده کنیم و به جای دو فایل قبل، این فایل را استفاده نماییم.

 

8. کوچک سازی دارایی‌ها (Asset Minifying)

به کمک Laravel Mix می‌توانیم دارایی‌ها (Assets) را کوچک کنیم. این کار باعث می‌شود فایل‌ها به حداقل حجم خود برسند و آن‌ها را برای استفاده در محیط Production آماده خواهد کرد. پس از انجام عمل کوچک سازی دارایی‌ها، حجم فایل‌ها کاهش خواهد یافت و همین امر باعث می‌شود که عملکرد اپلیکیشن ما بهبود یابد.

 

9. استفاده از پکیج افزایش سرعت Laravel PageSpeed

یک پکیج بسیار کاربردی برای افزایش سرعت لاراول Laravel PageSpeed است. این پکیج شامل میان‌افزار‌هایی (Middleware) است که به افزایش سرعت صفحات شما کمک بسیار زیادی می‌کند. برای مثال این پکیج می‌تواند فایل HTML را برای کاربر کوچک کند، فایل‌های جاوا اسکریپت را در ترد جداگانه اجرا کند و یا کامنت‌ها را در کد پاک کند. با استفاده از این پکیج می‌توانید سرعت اپلیکیشن خود را افزایش دهید.

 

10. استفاده از دستور Optimize

حتی یک برنامه لاراول سطح متوسط نیز تعدادی فایل اضافه دارد که بیهوده فراخوانی شده‌اند. یک ترفند ساده این است که تمام فایل‌هایی را که شامل درخواست‌ها می‌شوند، اعلام کنید و آنها را در یک فایل واحد ترکیب کنید. بنابراین، برای همه درخواست‌های شامل، یک فایل فراخوانی و بارگذاری می‌شود. برای این کار از دستور زیر استفاده کنید.

php artisan optimize --force

 

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

  • از لایت اسپید (LiteSpeed) استفاده کنید
  • سروری با منابع بیشتر و قوی‌تر تهیه کنید
  • از سی دی ان (CDN) برای فایل‌های CSS و JS استفاده کنید
  • برای اسکرین‌های متفاوت فایل CSS جداگانه بسازید (بجای استفاده از یک فایل style.css، می‌توانید برای هر اندازه اسکرین یک فایل جداگانه بسازید تا تنظیمات همه اسکرین‌ها را از یک فایل نخوانید)
  • کتابخانه‌های فراخوانی شونده را کمتر کنید
  • از آخرین نسخه PHP بر روی سرورتان استفاده کنید
  • از فرمت webp بجای png یا jpg برای فرمت تصاویر استفاده کنید
ارسال نظر :
پاسخ به