इसके लिए कोड पर काम कर रहे सभी को बहुत धन्यवाद!
मैं बस यह जोड़ना चाहता था कि मैं ठीक उसी चीज की तलाश कर रहा हूं, लेकिन मेरे मामले में यह संसाधित वस्तुओं के कैश का प्रबंधन करने के लिए है जो कि अजाक्स कॉल से वस्तुओं को फिर से पार्स और संसाधित करने से बचने के लिए हो सकता है या कैश नहीं किया गया हो सकता है ब्राउज़र द्वारा। यह उन वस्तुओं के लिए विशेष रूप से उपयोगी है जिनके लिए बहुत अधिक प्रसंस्करण की आवश्यकता होती है, आमतौर पर कुछ भी जो JSON प्रारूप में नहीं है, लेकिन एक बड़ी परियोजना या ऐप / एक्सटेंशन में कैश्ड इन चीजों को रखने के लिए बहुत महंगा हो सकता है जो लंबे समय तक चलता रहता है। समय।
वैसे भी, मैं इसे कुछ के लिए उपयोग करता हूं जैसे:
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
},
};
यह एक सरलीकृत उदाहरण है और इसमें कुछ त्रुटियां हो सकती हैं, लेकिन यह विचार देता है, जैसा कि आप इसे कुछ हद तक बुद्धि के साथ स्थिर वस्तुओं (सामग्री में परिवर्तन नहीं करेंगे) पर पकड़ के लिए उपयोग कर सकते हैं। यह किसी भी महंगी प्रसंस्करण आवश्यकताओं में महत्वपूर्ण रूप से कटौती कर सकता है जो ऑब्जेक्ट को पहले स्थान पर उत्पादित करना था।