【问题标题】:Jquery auto refresh divjQuery自动刷新div
【发布时间】:2011-03-06 01:21:03
【问题描述】:

Jquery 自动刷新会占用大量浏览器内存。有没有办法阻止这种情况。我每 3 秒刷新 2 个 div,但我将它提高到 9 秒和 15 秒,这有助于一点点,窗口在我的网站上保持打开的时间越长,直到最终浏览器崩溃所需的内存就越多。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>


<script>
var auto_refresh = setInterval(
function ()
{
$('#details2').load('links2.php').fadeIn("slow");
}, 15000); // refresh every 10000 milliseconds</script>

【问题讨论】:

  • 你用什么插件/代码来做这个?
  • 你能发布一些涉及的代码吗?
  • 加载的内容是什么?任何脚本,特别是?
  • 是的,它正在调用一个运行 sql 查询的页面。

标签: memory-leaks jquery refresh


【解决方案1】:

您可以尝试跳过 load() 并改用 $.ajax。我知道 load();是一个 ajax 请求,但我似乎记得它获取了整个脚本。尝试请求脚本,进行数据库计算并将数据以 json 格式返回。我假设您正在发送包含来自数据库请求的数据的完整 html。改用 json 试试这个。

您将获取数据作为对象,例如这样。

{"variable":"foo"}

然后您可以使用简单的 each 语句获取数据。

$.ajax({
    url: "links2.php",
    type: "POST",
    dataType: "json",
    success: function(data){

       // data here is returned as objects since it's json
       $.each(data, function(key, value) {
            $("#details2").empty().append(value.variable);
       }); 

    }
});

我认为这不应该泄露您的内存并最终导致您的浏览器崩溃,即使您每隔一秒左右调用一次。试一试,让我知道它是怎么回事。

祝你好运!

【讨论】:

    【解决方案2】:

    尝试将其更改为:

    // ...
    $('#details2').empty().load('links2.php').fadeIn('slow');
    

    它可能会停止明确告诉 jQuery 首先清空容器,因此它可以释放任何事件处理程序等。(虽然不清楚那里是否会有任何处理程序......)

    edit——其实没关系;我检查了 jQuery 源代码,看起来调用 .html()load() 确实如此,我很确定)似乎总是先调用 empty()

    【讨论】:

      【解决方案3】:

      虽然答案已被批准,但我应该告诉你。我遇到了同样的问题。

      我在 JQuery 文件的 src 中发现了问题。我使用 JQuery 站点 url 作为我的来源,是的,它使我的计算机使用率增加到 99%。但是后来我下载了整个 JQuery 脚本并将其保存在我的网站目录中,我在我的源代码中使用了它,然后计算机使用或内存没有问题。也试试吧。。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-01
        • 2012-12-01
        • 2010-10-05
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多