Lazy Loading এবং Deferred Rendering দুটি গুরুত্বপূর্ণ কৌশল যা অ্যাপ্লিকেশনের পারফরম্যান্স এবং রেসপন্স টাইম উন্নত করার জন্য ব্যবহৃত হয়। ExtJS এ এই দুটি কৌশল ব্যবহৃত হয়, বিশেষত যখন আপনার অ্যাপ্লিকেশন বড় এবং জটিল হয় এবং আপনি ব্যবহারকারীদের জন্য দ্রুত এবং স্লো পেজ লোডিং অভিজ্ঞতা প্রদান করতে চান।
এখানে, আমরা Lazy Loading এবং Deferred Rendering এর কী, কীভাবে এগুলি কাজ করে এবং কীভাবে 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 রিকোয়েস্টের মাধ্যমে ডেটা লোড করা হচ্ছে।Deferred Rendering হল একটি কৌশল যেখানে UI উপাদানগুলি শুধুমাত্র তখন রেন্ডার করা হয় যখন সেগুলি দৃশ্যমান হয় বা ব্যবহারকারী ঐ উপাদানের সাথে ইন্টারঅ্যাক্ট করে। এটি UI রেন্ডারিং-এর সময় বিলম্বিত করার মাধ্যমে প্রথম লোডের সময় সাশ্রয় করতে সহায়ক।
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
ব্যবহার করে স্ক্রোল অবস্থান রক্ষা করা হচ্ছে, অর্থাৎ নতুন ডেটা লোড হলে ইউজারের বর্তমান স্ক্রোল অবস্থান বজায় থাকবে।যখন আপনি Lazy Loading এবং Deferred Rendering একসাথে ব্যবহার করেন, তখন এটি আরো বেশি পারফরম্যান্সের উন্নতি সাধন করতে সাহায্য করে, কারণ ডেটা এবং UI উপাদানগুলি শুধুমাত্র প্রয়োজনের ভিত্তিতে লোড এবং রেন্ডার করা হয়।
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
এর মাধ্যমে লোডিং ইন্ডিকেটর দেখানো হয়।এভাবে, Lazy Loading এবং Deferred Rendering ব্যবহার করে আপনি বড় এবং জটিল অ্যাপ্লিকেশনগুলিকে দ্রুত এবং দক্ষভাবে পরিচালনা করতে পারেন, যা ব্যবহারকারীদের জন্য একটি স্মুথ এক্সপিরিয়েন্স প্রদান করে।
Read more