Lazy Loading এবং Deferred Rendering

Web Development - এক্সটিজেএস (ExtJS) - ExtJS এর Performance Optimization |

Lazy Loading এবং Deferred Rendering দুটি গুরুত্বপূর্ণ কৌশল যা অ্যাপ্লিকেশনের পারফরম্যান্স এবং রেসপন্স টাইম উন্নত করার জন্য ব্যবহৃত হয়। ExtJS এ এই দুটি কৌশল ব্যবহৃত হয়, বিশেষত যখন আপনার অ্যাপ্লিকেশন বড় এবং জটিল হয় এবং আপনি ব্যবহারকারীদের জন্য দ্রুত এবং স্লো পেজ লোডিং অভিজ্ঞতা প্রদান করতে চান।

এখানে, আমরা Lazy Loading এবং Deferred Rendering এর কী, কীভাবে এগুলি কাজ করে এবং কীভাবে ExtJS এ এই কৌশলগুলি ব্যবহার করা যায় তা দেখব।


১. Lazy Loading (লেনি লোডিং)

Lazy Loading হল একটি কৌশল যেখানে ডেটা বা উপাদানগুলি শুধুমাত্র তখনই লোড করা হয় যখন সেগুলির প্রয়োজন হয়। এটি ব্যবহারকারীর জন্য দ্রুত লোডিং অভিজ্ঞতা প্রদান করতে সহায়ক, কারণ শুধুমাত্র প্রয়োজনীয় ডেটা লোড করা হয় এবং অ্যাপ্লিকেশনের বাকি অংশ অপেক্ষা করে না।

Lazy Loading এর মূল ধারণা:

  • অ্যাপ্লিকেশনের স্টোর, গ্রিড বা কম্পোনেন্টের জন্য ডেটা বা উপাদানগুলি রিড/লোড করা হয় শুধুমাত্র যখন সেগুলির প্রয়োজন হয় (যেমন, পেজ স্ক্রোল করা বা ভিউতে উপাদান আসা)।
  • এটি ব্রাউজারের রিসোর্স ব্যবহারে সাশ্রয় করে এবং প্রথম লোড টাইম দ্রুত করে।

ExtJS তে Lazy Loading উদাহরণ:

একটি ডেটা গ্রিডের জন্য Lazy Loading প্রয়োগ করা:

Ext.create('Ext.grid.Panel', {
    title: 'Lazy Loaded Grid',
    store: {
        type: 'json',
        proxy: {
            type: 'ajax',
            url: 'https://example.com/api/users',
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        },
        autoLoad: false, // স্বয়ংক্রিয়ভাবে লোড না করে শুধু প্রয়োজন হলে লোড হবে
        pageSize: 50, // প্রতি পেজে ৫০টি রেকর্ড
    },
    columns: [
        { text: 'Name', dataIndex: 'name', flex: 1 },
        { text: 'Email', dataIndex: 'email', flex: 1 }
    ],
    renderTo: Ext.getBody(),
    loadMask: true
});

এখানে:

  • autoLoad: false: ডেটা প্রথমে লোড করা হবে না; শুধুমাত্র গ্রিডে ডেটা প্রয়োজন হলে লোড হবে।
  • pageSize: 50: প্রতি পেজে ৫০টি রেকর্ড ডাইনামিকভাবে লোড করা হবে।
  • proxy: Ajax রিকোয়েস্টের মাধ্যমে ডেটা লোড করা হচ্ছে।

Lazy Loading Benefits:

  • পারফরম্যান্স উন্নতি: লোড টাইম কমিয়ে দ্রুত ফাস্ট লোড অভিজ্ঞতা প্রদান করা।
  • রিসোর্স সাশ্রয়: প্রয়োজনীয় ডেটা কেবলমাত্র লোড করার ফলে ব্রাউজারের মেমরি ব্যবহারে সাশ্রয় হয়।

২. Deferred Rendering (ডেফার্ড রেন্ডারিং)

Deferred Rendering হল একটি কৌশল যেখানে UI উপাদানগুলি শুধুমাত্র তখন রেন্ডার করা হয় যখন সেগুলি দৃশ্যমান হয় বা ব্যবহারকারী ঐ উপাদানের সাথে ইন্টারঅ্যাক্ট করে। এটি UI রেন্ডারিং-এর সময় বিলম্বিত করার মাধ্যমে প্রথম লোডের সময় সাশ্রয় করতে সহায়ক।

Deferred Rendering এর মূল ধারণা:

  • UI উপাদানগুলি শুধু তখনই রেন্ডার করা হয় যখন সেগুলি প্রয়োজন হয় (যেমন, ব্যবহারকারী স্ক্রোল করলে নতুন উপাদান দেখানো হয়)।
  • এটি UI রেন্ডারিং-এর জন্য অতিরিক্ত রিসোর্স খরচ কমায় এবং অ্যাপ্লিকেশনের প্রথম লোডিং দ্রুত করে।

ExtJS তে Deferred Rendering উদাহরণ:

Ext.create('Ext.grid.Panel', {
    title: 'Deferred Rendering Grid',
    store: {
        type: 'json',
        proxy: {
            type: 'ajax',
            url: 'https://example.com/api/users',
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        },
        autoLoad: true,
        pageSize: 50
    },
    columns: [
        { text: 'Name', dataIndex: 'name', flex: 1 },
        { text: 'Email', dataIndex: 'email', flex: 1 }
    ],
    renderTo: Ext.getBody(),
    viewConfig: {
        // Deferred Rendering Enabling
        preserveScrollOnRefresh: true, // স্ক্রোল অবস্থান সুরক্ষিত থাকবে
        loadMask: true // লোড মাস্ক
    }
});

এখানে:

  • viewConfig: preserveScrollOnRefresh ব্যবহার করে স্ক্রোল অবস্থান রক্ষা করা হচ্ছে, অর্থাৎ নতুন ডেটা লোড হলে ইউজারের বর্তমান স্ক্রোল অবস্থান বজায় থাকবে।
  • Deferred Rendering-এর মাধ্যমে নতুন রেকর্ডগুলি রেন্ডার করা হয় শুধুমাত্র যখন সেগুলি ভিউয়ে আসবে।

Deferred Rendering Benefits:

  • ইউজার ইন্টারফেস দ্রুত লোড হয়: শুধুমাত্র দৃশ্যমান উপাদান রেন্ডার হওয়ার কারণে প্রথম লোড দ্রুত হয়।
  • রিসোর্স সাশ্রয়: UI উপাদানগুলোর অতিরিক্ত রেন্ডারিং কমিয়ে দেয়, যা ব্রাউজারের মেমরি ব্যবহারে সাশ্রয় করে।

৩. Lazy Loading এবং Deferred Rendering একসাথে ব্যবহার করা

যখন আপনি Lazy Loading এবং Deferred Rendering একসাথে ব্যবহার করেন, তখন এটি আরো বেশি পারফরম্যান্সের উন্নতি সাধন করতে সাহায্য করে, কারণ ডেটা এবং UI উপাদানগুলি শুধুমাত্র প্রয়োজনের ভিত্তিতে লোড এবং রেন্ডার করা হয়।

উদাহরণ: Lazy Loading এবং Deferred Rendering একসাথে

Ext.create('Ext.grid.Panel', {
    title: 'Lazy Load & Deferred Rendering Grid',
    store: {
        type: 'json',
        proxy: {
            type: 'ajax',
            url: 'https://example.com/api/users',
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        },
        autoLoad: false,  // Lazy load
        pageSize: 50
    },
    columns: [
        { text: 'Name', dataIndex: 'name', flex: 1 },
        { text: 'Email', dataIndex: 'email', flex: 1 }
    ],
    renderTo: Ext.getBody(),
    viewConfig: {
        preserveScrollOnRefresh: true,  // Deferred Rendering
        loadMask: true
    },
    listeners: {
        render: function() {
            this.store.load(); // Store data will be loaded lazily
        }
    }
});

এখানে:

  • autoLoad: false: ডেটা লোড শুরু হবে শুধুমাত্র যখন গ্রিড দৃশ্যমান হবে।
  • viewConfig: preserveScrollOnRefresh ব্যবহারের মাধ্যমে স্ক্রোল অবস্থান সুরক্ষিত থাকে এবং loadMask এর মাধ্যমে লোডিং ইন্ডিকেটর দেখানো হয়।

সারাংশ

  1. Lazy Loading: যখন প্রয়োজন হবে তখন ডেটা বা উপাদানগুলি লোড করা হয়, যা প্রথম লোডের সময় দ্রুত করার জন্য ব্যবহার করা হয়।
  2. Deferred Rendering: UI উপাদানগুলি শুধু তখনই রেন্ডার করা হয় যখন সেগুলি দৃশ্যমান হয়, যা পারফরম্যান্স উন্নত করতে সাহায্য করে।
  3. Lazy Loading এবং Deferred Rendering একসাথে: এই দুটি কৌশল একসাথে ব্যবহার করে আপনি ডেটা এবং UI উপাদানগুলিকে প্রয়োজনীয় সময়েই লোড ও রেন্ডার করতে পারবেন, যা অ্যাপ্লিকেশনের পারফরম্যান্স এবং ইউজার এক্সপিরিয়েন্সকে উন্নত করে।

এভাবে, Lazy Loading এবং Deferred Rendering ব্যবহার করে আপনি বড় এবং জটিল অ্যাপ্লিকেশনগুলিকে দ্রুত এবং দক্ষভাবে পরিচালনা করতে পারেন, যা ব্যবহারকারীদের জন্য একটি স্মুথ এক্সপিরিয়েন্স প্রদান করে।

Content added By
Promotion