使用AJAX始终保持最新内容

时间:2011-08-18 08:23:36

标签: javascript jquery ajax asp.net-mvc

目前我每10分钟使用一次Ajax请求来更新其他人的某些内容和其他时间间隔。

我使用jQuery执行此操作:

  • 在鼠标移动时,会检查活动页面
  • 如果活动页面未在给定时间间隔内更新,则页面会更新

我这样做是因为虽然我希望内容保持最新,但我不希望它在后台发送请求(当用户不使用应用程序时)。这样做也意味着如果用户在超过一段时间内没有使用它,当他们再次开始使用它时,它会自动更新。

我想知道这是多么有效,因为无论何时鼠标移动,调用都会被调用(并且稍微降低了性能 - 特别是在尝试点击链接时) - 这是一种更有效的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我希望在鼠标移动时激活/重置一个计时器,比如60秒,并设置固定间隔检查,只有当该计时器高于零时才会运行。

这样,每次鼠标移动时都不会进行检查,如果用户变为非活动状态,则更新检查会在60秒后停止。

答案 1 :(得分:1)

另一种可能的解决方案是使用窗口blurfocus事件来确定窗口是否处于活动状态:

var checkForContentUpdates = true;

$(window).focus(function() {
    checkForContentUpdates = true;
});

$(window).blur(function() {
    checkForContentUpdates = false;
});

然后,您的AJAX例程将关闭checkForContentUpdates布尔。

我确信有些情况下这不是万无一失的,因此您可能需要将此方法与其他逻辑相结合。