آواتار وب (هدف پردازش کارن) آدرس شرکت

تهران- خیابان بهشتی (عباس آباد)، خیابان پاکستان، کوچه ساوجی نیا، پلاک 85، واحد 2

کد پستی

1531713113

تماس با ما

شنبه تا چهارشنبه 9 صبح الی 18

پنجشنبه ها 9 صبح الی 15

88558103 (021)

88520791 (021)

2598804 0912

ما را اینجا پیدا کنید

درک Memoization در لاراول

تاریخ ایجاد : 18 فروردین,1403
Blog Images

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

کاربرد Memoization در لاراول

در لاراول، memoization می‌تواند به خصوص در بهینه‌سازی عملکرد کوئری‌های پایگاه داده، محاسبات پیچیده یا فراخوانی‌های API که زمان و منابع زیادی را مصرف می‌کنند، مفید باشد. با ذخیره‌سازی نتیجه این عملیات‌ها، لاراول می‌تواند به سرعت به داده‌های قبلاً محاسبه‌شده دسترسی پیدا کند و از انجام مجدد کوئری‌ها یا محاسبات جلوگیری کند.

چگونگی استفاده از Memoization

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

کدنویسی تابع با Memoization: هنگام نوشتن تابعی که قرار است از memoization استفاده کند، باید ابتدا بررسی کنید که آیا نتیجه عملیات قبلاً محاسبه و ذخیره شده است یا خیر. اگر نتیجه موجود باشد، باید آن را بازیابی و برگردانید؛ در غیر این صورت، باید عملیات را انجام دهید، نتیجه را ذخیره کنید و سپس آن را برگردانید.

کلیدهای کش: برای هر نتیجه ذخیره‌شده، باید یک کلید منحصر به فرد تعریف کنید. این کلید باید تمام پارامترهای ورودی تابعی که ممکن است نتیجه را تغییر دهند را در نظر بگیرد.

مثال عملی

فرض کنید می‌خواهیم نتایج یک کوئری پایگاه داده سنگین را که لیستی از کاربران را برمی‌گرداند، memoize کنیم:

use Illuminate\Support\Facades\Cache;

function getHeavyUsersQuery() {
    $key = 'heavy_users_query_result';
    $ttl = 60 * 60; 

// زمان زنده بودن کش به ثانیه، مثلاً یک ساعت

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

    if (Cache::has($key)) {
// بازگرداندن نتیجه از کش
        return Cache::get($key); 
    }


    // انجام کوئری و ذخیره‌سازی نتیجه در کش اگر نتیجه در کش موجود نباشد

    $result = User::where('some_condition', true)->get();
    Cache::put($key, $result, $ttl);

    return $result;
}

در Laravel، Memoization به صورت معمول از کش‌ها (Caching) استفاده می‌کند. وقتی یک محاسبه انجام می‌شود، نتیجه آن به عنوان یک کلید-مقدار در کش (Cache) ذخیره می‌شود. بار دیگری که همان محاسبه مورد نیاز است، ابتدا کش بررسی می‌شود. اگر نتیجه در کش وجود داشته باشد، برنامه از کش استفاده می‌کند به جای اجرای محاسبه مجدد. این کار باعث افزایش سرعت عملکرد برنامه می‌شود.

نتیجه‌گیری

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

با هم کار کنیم

به یک پروژه موفق احتیاج دارید؟

بررسی پروژه
با ما تماس بگیرید 88558103 (021)