Skip to main content
 首页 » 编程设计

jquery之IE8图像缓存或错误

2026年07月28日7dflying

在我当前的项目中,我注意到 IE 使用了相当多的内存。花了一些时间进行调查,我发现图像没有从内存中删除,但我的网站非常密集地使用图像。

最后,我创建了一个简单的测试,动态加载图像,然后使用 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 工具来查找任何泄漏,但它没有显示任何泄漏。 IE 是否以某种方式缓存图像? IE 处理动态创建的图像元素是否存在任何问题?

更新 在 Firefox 中,内存级别保持不变,但在 IE 中,内存级别正在增加。

请您参考如下方法:

这似乎是 IE 的问题。所有浏览器都会缓存内容,以便在再次需要时可以快速检索。如果足够聪明,IE 会在一段时间后清除缓存,或者至少在关闭时清除缓存。

一种选择是使用无缓存元标记,但这会减慢所有页面的速度,因为每次页面加载时都必须重新加载图像。

就实际使用而言,对于一个网站来说似乎相当大,但现在电脑至少有 2GB RAM(有些人仍然满意 1GB),这已经足够了。我认为您不会遇到内存问题。

作为旁注,有时 FireFox 在经过长时间的网络开发后会占用大量内存。我认为这只是浏览器很聪明。

我认为浏览器应该更频繁地清除缓存 - 如果您访问大量网站,那么它会很快变得很大。