এর জন্য কোডে কাজ করা প্রত্যেককে অনেক ধন্যবাদ!
আমি কেবল যুক্ত করতে চেয়েছিলাম যে আমি ঠিক একই জিনিসটি সন্ধান করেছি, তবে আমার ক্ষেত্রে এটি অ্যাজাক্স কলগুলি যে ক্যাশে হয়েছে বা নাও হতে পারে তা পুনরায় পার্স এবং প্রক্রিয়াজাতকরণগুলি এড়াতে প্রক্রিয়াকৃত অবজেক্টগুলির একটি ক্যাশে পরিচালনার জন্য for ব্রাউজার দ্বারা। এটি বিশেষত জেএসওএন ফর্ম্যাটে না এমন কিছু যা প্রসেসিংয়ের প্রয়োজন সেগুলির জন্য বিশেষভাবে কার্যকর তবে এগুলি বড় প্রকল্পে বা একটি অ্যাপ্লিকেশন / এক্সটেনশনে দীর্ঘায়িত রেখে রাখা খুব ব্যয়বহুল হতে পারে can সময়।
যাইহোক, আমি এটি এমন কিছুর জন্য ব্যবহার করি:
var myCache = {
cache: {},
order: [],
size: 0,
maxSize: 2 * 1024 * 1024, // 2mb
add: function(key, object) {
// Otherwise add new object
var size = this.getObjectSize(object);
if (size > this.maxSize) return; // Can't store this object
var total = this.size + size;
// Check for existing entry, as replacing it will free up space
if (typeof(this.cache[key]) !== 'undefined') {
for (var i = 0; i < this.order.length; ++i) {
var entry = this.order[i];
if (entry.key === key) {
total -= entry.size;
this.order.splice(i, 1);
break;
}
}
}
while (total > this.maxSize) {
var entry = this.order.shift();
delete this.cache[entry.key];
total -= entry.size;
}
this.cache[key] = object;
this.order.push({ size: size, key: key });
this.size = total;
},
get: function(key) {
var value = this.cache[key];
if (typeof(value) !== 'undefined') { // Return this key for longer
for (var i = 0; i < this.order.length; ++i) {
var entry = this.order[i];
if (entry.key === key) {
this.order.splice(i, 1);
this.order.push(entry);
break;
}
}
}
return value;
},
getObjectSize: function(object) {
// Code from above estimating functions
},
};
এটি একটি সরল উদাহরণ এবং এর কিছু ত্রুটি থাকতে পারে তবে এটি ধারণা দেয়, কারণ আপনি কিছুটা বুদ্ধি দিয়ে স্ট্যাটিক অবজেক্টগুলিকে (বিষয়বস্তু পরিবর্তন করতে পারবেন না) ধরে রাখতে পারেন। এটি কোনও ব্যয়বহুল প্রক্রিয়াজাতকরণের প্রয়োজনীয়তাগুলিকে উল্লেখযোগ্যভাবে হ্রাস করতে পারে যা অবজেক্টটি প্রথম স্থানে তৈরি করতে হয়েছিল।