Laravel Performance Optimization
Laravel Performance Optimization: অ্যাপ্লিকেশনকে দ্রুত করার ১০টি টিপস
Laravel দিয়ে তৈরি অ্যাপ্লিকেশন যতই বড় হয়, পারফরম্যান্স বজায় রাখা ততটাই গুরুত্বপূর্ণ হয়ে পড়ে। আজকের এই ব্লগে আমরা Laravel অ্যাপকে কীভাবে আরও দ্রুত, হালকা ও প্রোডাকশন রেডি করা যায় সেই বিষয়েই আলোচনা করবো।
১. Eager Loading ব্যবহার করুন (N+1 সমস্যা এড়াতে)
আমরা আগের টিউটোরিয়ালে দেখেছি with() ব্যবহার করে কিভাবে N+1 সমস্যা থেকে বাঁচা যায়। এটা Laravel performance বাড়ানোর অন্যতম প্রধান কৌশল।
$users = User::with('profile')->get();
২. Caching ব্যবহার করুন (Query, View, Routes)
Laravel এ বিভিন্ন ধরণের ক্যাশিং রয়েছে:
Query Cache:
$users = Cache::remember('users.all', 60, function () {
return User::all();
});
Route Cache:
php artisan route:cache
Config Cache:
php artisan config:cache
View Cache:
php artisan view:cache
৩. Chunking এবং Cursor ব্যবহার করুন বড় ডেটার জন্য
all() বা get() ব্যবহার না করে chunk() বা cursor() ব্যবহার করলে মেমরি অনেক কম ব্যবহার হয়।
User::chunk(100, function ($users) {
foreach ($users as $user) {
// process
}
});
৪. Indexing করুন ডেটাবেস টেবিলে
ডেটাবেসে where, join, orderBy ইত্যাদিতে ব্যবহৃত ফিল্ডগুলোতে index তৈরি করুন। উদাহরণ:
Schema::table('users', function (Blueprint $table) {
$table->index('email');
});
৫. Pagination ব্যবহার করুন
সব ডেটা একসাথে get() না করে paginate() ব্যবহার করুন:
$posts = Post::paginate(10);
৬. Unused Service Provider ও Middleware অপসারণ করুন
config/app.php ফাইল দেখে অপ্রয়োজনীয় সার্ভিস প্রোভাইডার ও মিডলওয়্যার বাদ দিন।
৭. Queues ব্যবহার করুন Time-Consuming Task এর জন্য
ইমেইল পাঠানো, ভিডিও প্রসেসিং, রিপোর্ট জেনারেশন ইত্যাদি কাজগুলো queue করে দিন:
Mail::to($user)->queue(new WelcomeMail($user));
৮. Optimize Composer Autoload
composer install --optimize-autoloader --no-dev
৯. OPcache Enable করুন (Production Server এ)
আপনার PHP সার্ভারে OPcache চালু থাকলে স্ক্রিপ্টগুলো ক্যাশ হয়ে থাকবে এবং দ্রুত রান করবে।
১০. Debugbar শুধুমাত্র Local এ চালু রাখুন
barryvdh/laravel-debugbar শুধুমাত্র local environment এ চালু রাখুন।
if (app()->environment('local')) {
\Debugbar::enable();
}
Original Post: https://iamsumon.vercel.app/blog/post/683ff8044e5ab3e509ee6910
My Portfolio: https://iamsumon.vercel.app
No comments