在我目前的項目中,我注意到IE使用了相當多的內存。花了一些時間調查,我發現圖像不會從內存中刪除,但我的網站使用圖像相當強烈。IE8圖像緩存或錯誤?
最後我創建了一個簡單的測試,使用jQuery的
我的測試JS動態加載的圖像,然後將其清除:
$(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();
}
HTML測試:
<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>
雖然追加新圖像IE內存正在增加。但是當我刪除所有加載的圖像後,內存不會被清除。例如,在頁面加載後,IE進程使用20MB,添加圖像後使用35MB,清除後爲30MB。
我用sIEve工具找到任何leand,但它顯示沒有泄漏。 IE以某種方式緩存圖像嗎? IE中是否存在處理動態創建的圖像元素的問題?
更新 在Firefox的內存水平保持不變,但在IE它正在增加。
最大內存上限是我們的網站350MB。請糾正我,如果我錯了,但這是相當多的。大多數網站沒有達到100MB的限制。 – lostaman 2010-11-10 23:45:29
@lostaman - 是的,這是非常大的。我真的不確定你會如何解決內存問題,除非你使用no cache meta標籤來不緩存任何東西。你知道其他瀏覽器的內存使用情況嗎?這會很方便 - 如果是IE問題或代碼問題,這很明顯。 – Bojangles 2010-11-11 00:20:32
發現有趣的事情。如果我打開Google網站並嘗試密集使用實例搜索(不刷新頁面),則IE中的內存級別正在增加。我設法達到了200MB的水平,只是輸入不同的組合。在Firefox中,一切都可以找到。如果ajax組件被大量使用,它可能只是IE以某種方式緩存內容。 – lostaman 2010-11-12 13:18:19