2010-11-10 10 views
5

मेरी वर्तमान परियोजना पर मैंने देखा है कि आईई काफी मेमोरी का उपयोग करता है। जांच के कुछ समय बिताए मुझे पता चला कि छवियों को स्मृति से हटाया नहीं गया है, लेकिन मेरी साइट छवियों का उपयोग बहुत सहजता से करती है।आईई 8 छवि कैशिंग या त्रुटि?

$(document).ready(function() { 
    $('#appendImages').click(append); 
    $('#removeImages').click(remove); 
}); 

function append() { 
    $.post("http://localhost/TestService/GetImages", { key: $('#key').val()}, function (data) { 
     $.each(data.Data.items, function (i, v) { 
      $('#imagesContainer').append('<img src="' + v.imageUrl + '" />'); 
     }); ; 
    }); 
} 

function remove() { 
    $('#imagesContainer').empty(); 
} 

टेस्ट एचटीएमएल:

<input id="key" type="text" value="jeans" > 
<div id="reset">Reset</div> 
<div id="repeatableReset">Repeatable Reset</div> 
<div id="stop">Stop</div> 
<br /> 
<br /> 
<br /> 
<br /> 
<div id="appendImages">append</div> 
<div id="removeImages">remove</div> 
<div id="imagesContainer"></div> 
<html> 

</html> 

नया जोड़कर जबकि

अंत में मैं एक साधारण परीक्षण है कि गतिशील छवियों को लोड करता है और फिर इसे साफ करता है jQuery

मेरा परीक्षण js का उपयोग कर बनाया गया है छवियों आईई स्मृति incresing है। लेकिन जब मैं सभी लोड छवियों को हटा देता हूं तो स्मृति साफ़ नहीं होती है। उदाहरण के लिए, पृष्ठ लोड करने के बाद आईई प्रक्रिया 20 एमबी का उपयोग करती है, छवियों को जोड़ने के बाद यह 35 एमबी का उपयोग करता है, समाशोधन के बाद - 30 एमबी।

मैंने किसी भी लींड को खोजने के लिए एसआईईवी उपकरण का उपयोग किया है लेकिन यह कोई रिसाव नहीं है। आईई किसी भी तरह छवियों को कैश करता है? गतिशील रूप से बनाए गए छवि तत्वों को संभालने के लिए IE में कोई समस्या है?

अद्यतन फ़ायरफ़ॉक्स मेमोरी स्तर स्थिर रहता है, लेकिन आईई में यह बढ़ रहा है।

उत्तर

1

यह आईई के साथ एक मुद्दा प्रतीत होता है। सभी ब्राउज़र सामग्री को कैश करेंगे ताकि इसे फिर से जरूरी होने पर इसे तुरंत पुनर्प्राप्त किया जा सके। यदि यह काफी चालाक है, तो आईई थोड़ी देर बाद कैश साफ़ कर देगा, या कम से कम बंद हो जाएगा।

एक विकल्प कोई कैश मेटा टैग का उपयोग करना है, लेकिन यह आपके सभी पृष्ठों को धीमा कर देगा क्योंकि पेजों को हर बार पृष्ठ को फिर से लोड करना होगा।

वास्तविक उपयोग के लिए, यह वेबसाइट के लिए काफी बड़ा प्रतीत होता है, लेकिन कंप्यूटर में अब कम से कम 2 जीबी रैम है (कुछ अभी भी 1 जीबी से खुश हैं), जो काफी है। मुझे नहीं लगता कि आप स्मृति मुद्दों में भाग लेंगे।

एक साइड नोट के रूप में, कभी-कभी फ़ायरफ़ॉक्स ने वेब-देव की लंबी अवधि के बाद स्मृति के बड़े हिस्से ले लिए हैं। मुझे लगता है कि यह सिर्फ ब्राउज़र चतुर है।

मुझे लगता है कि ब्राउज़र को अपने कैश को अधिक बार साफ़ करना चाहिए - यदि आप साइटों के भार का दौरा कर रहे हैं तो यह बहुत तेज़ी से बहुत बड़ा हो जाएगा।

+0

अधिकतम स्मृति सीमा हम देखा हमारी साइट के लिए 350MB है। अगर मैं गलत हूं तो कृपया मुझे सही करें लेकिन यह काफी है। अधिकांश साइटें 100 एमबी सीमा तक नहीं पहुंच पाईं। – lostaman

+0

@ लोस्तमान - हाँ यह अविश्वसनीय रूप से बड़ा है। मुझे वास्तव में यह सुनिश्चित नहीं है कि आप स्मृति समस्या को कैसे ठीक करेंगे जब तक कि आप कैश मेटा टैग का उपयोग नहीं करते हैं, ताकि कुछ भी कैश न हो। क्या आप जानते हैं कि अन्य ब्राउज़रों के लिए स्मृति उपयोग क्या है? यह आसान होगा - यह स्पष्ट होगा कि यह आईई समस्या या कोड समस्या थी। – Bojangles

+0

दिलचस्प बात मिली। अगर मैं Google साइट खोलता हूं और आईई में मेमोरी लेवल बढ़ रहा है तो इंस्टेंस सर्च (पेज रीफ्रेश) का गहन रूप से उपयोग करने की कोशिश करता हूं। मैं अलग-अलग संयोजनों को टाइप करने में 200 एमबी स्तर तक पहुंचने में कामयाब रहा। फ़ायरफ़ॉक्स में सब कुछ मिल जाता है। अगर यह AJAX घटकों का व्यापक रूप से उपयोग किया जाता है तो यह केवल आईई कैश सामग्री हो सकता है। – lostaman

1

आप jQuery तो मेमोरी लीक का उपयोग कर ajax अनुरोधों का एक बहुत कुछ कर रहे हैं, तो इस की वजह से हो सकता है:

http://bugs.jquery.com/ticket/6242

jQuery में एक बग नहीं है। विवरण के लिए ऊपर दिए गए लिंक को देखें - 1.4.5 रिलीज के लिए फिक्स की योजना बनाई गई है, लेकिन आप टिप्पणियों में कुछ कोड नमूने पा सकते हैं।

+0

मैंने इस फिक्स को लागू किया है लेकिन इसने स्थिति को नहीं बदला है। स्मृति सीमा बढ़ती जा रही है। – lostaman

0

यह संभव है कि आईई छवियों को कैश नहीं कर रहा है।

From jQuery docs:

$.post('ajax/test.html', 
    function(data) { 
     $('.result').html(data); 
}); 

इस उदाहरण का अनुरोध किया HTML स्निपेट को हासिल करेगा और पृष्ठ पर डाल देता है।

पेज पोस्ट के साथ प्राप्त किया गया कभी नहीं कैश की गई है, तो कैश और jQuery.ajaxSetup (में विकल्पों ifModified) इन अनुरोधों पर कोई प्रभाव हो रहे हैं।

आप इस समाधान का उपयोग माप लेने के द्वारा एक परीक्षण कर सकते हैं: How to force a web browser NOT to cache images