这是我在网页上的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时,数据都存储在浏览器的某个地方并且它不会清除..当我打开任务管理器时,我可以看到内存使用量的增长......
和继承人图片的截图..
我应该担心释放内存吗?或者一切都按原样运作......
答案 0 :(得分:3)
为什么不使用网址重新加载图片而不是获取获取网址的整个页面?如果要阻止缓存,请将图像设置为不通过服务器标头缓存,或使用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);
这仍会占用磁盘空间,因为每个被破坏的图像被视为不同的图像。如果它被缓存,你将使用过时的图像。但至少你没有再次加载整个页面。
答案 1 :(得分:1)
发现浏览器只是缓存图像,但最终会被清理。
答案 2 :(得分:0)
使用$ post而不是$ get。 IE经常兑现GET请求数据。
答案 3 :(得分:0)
页面中只有一个img#Chart1,因此只有一个图像使用内存 其他人只会在浏览器的缓存中。
但我不认为default.aspx以html格式返回,
它应该在json中返回数据,如:
{
imageUrl: "http://example.com/a.jpg",
fetcha: "some text"
}