2

这是我在网页上使用的 jQuery 方法,它通过加载同一页面并替换图像每 5 秒刷新一次图像。

$(document).ready(function () {
    var refreshId = setInterval(function () {
        $.get('default.aspx', function (data) {
            var page = data;
            var image = $(page).find("img");
            var fecha = $(page).find("div #fecha");


            $("#Chart1").attr("src", image.attr("src"));
            $("#fecha").text(fecha.text());                    
        });
    }, 5000);
});

我看到每次加载 img 时,数据都会存储在浏览器中的某个位置并且它不会清理..当我打开任务管理器时,我可以看到内存使用量在增长..

这是图像axd的屏幕截图..

我应该担心释放内存吗?或者一切都按预期工作..

在此处输入图像描述

4

4 回答 4

3

为什么不只使用 url 重新加载图像,而不是获取获取 url 的整个页面?如果要阻止缓存,请通过服务器标头将图像设置为不缓存,或使用cachebusting

var img = document.getElementById('Chart1');          //use plain JS since it's just an ID
var refreshId = setInterval(function () {
    var rand = "?"+(Math.random()*10000000000000000);  //cache busting method
    img.src = "path_to_image"+rand                     //set src using busted url
}, 5000);

这仍然会占用磁盘空间,因为每个破坏的图像都被视为不同的图像。如果它被缓存,您将使用陈旧的图像。但至少你不会再次加载整个页面。

于 2012-04-25T06:42:55.343 回答
1

发现浏览器只是缓存图像,但最终会被清理。

于 2012-07-03T18:55:04.813 回答
0

使用 $post 而不是 $get。IE经常兑现GET请求数据。

于 2012-04-25T06:59:09.653 回答
0

您的页面中只有一个 img#Chart1,因此只有一个图像使用内存。
其他人只会在浏览器的缓存中。

但我不认为 default.aspx 以 html 格式返回,
它应该以 json 格式返回数据,例如:

{
    imageUrl: "http://example.com/a.jpg",
    fetcha: "some text"
}
于 2012-04-25T07:10:52.880 回答