بارگزاری دیرهنگام( Lazy Loading )

در برنامه های تحت وب، با توجه به اینکه بخش عمده‌ای از پردازش بر روی یک سرور مرکزی انجام می‌شود، بهینه‌سازی از اهمیت بسیار بالایی برخوردار است.
یکی از روش‌های افزایش سرعت «بارگزاری دیرهنگام» یا «Lazy Loading» نام دارد.

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

برای روشن‌شدن بیشتر موضوع به مثال زیر توجه کنید:

class options_class {
    private $options = array();
    private $loaded = false; // Lazy loading state
 
    public function get_value( $name ) {
        // Lazy load options
        if( $this -> loaded == false ) {
            $this -> loaded = true;
 
            $query = sprintf( 'SELECT * FROM `%s`', TABLE_OPTIONS );
            if( $res = mysql_query( $query ) ) {
 
                while( $row = mysql_fetch_assoc( $res ) ) {
                    $this -> options[ $row[ 'op_name' ] ] = $row[ 'op_value' ];
                }
 
            }
 
        }
 
        if( isset( $this -> options[ $name ] ) ) {
            return $this -> options[ $name ];
        } else {
            return '';
        }
 
    }
 
}

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

// Do not load anything here
$options = new options_class();
// ...
// Lazy load all options and return specified value
echo $options -> get_value( 'test_option' );
// ...
// Use cached data
echo $options -> get_value( 'test_option' );
این نوشته در PHP, برنامه‌نویسی ارسال و برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

۲ دیدگاه برای بارگزاری دیرهنگام( Lazy Loading )

  1. محسن می‌گوید:

    روش خوبیه
    اما این فلاش با ob_start() تناقضی نداره
    منظورم اینه که برای header که بعدا استفاده کنیم تو اسکریپت مشکلی پیش نمیاد
    یا برای cookie_set()

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      اگر از روش MVC استفاده کنید، عملیات ارسال کوکی یا تغییر سرآمد اصولا باید در کنترلر انجام بشه
      یعنی قبل از اینکه View به نمایش در بیاد
      اگر بخش تصمیم‌گیری و نمایش شما یکی باشه، بعد از flush امکان ارسال کوکی و تغییر سرآمد وجود نخواهد داشت.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>