将ajax请求限制为单个页面

时间:2014-08-06 12:03:07

标签: javascript php ajax

我有一个为用户构建的网页管理页面, 这个页面包含一个每4秒钟调用一次的ajax来显示实时信息, 我的问题是我的一些用户在不同的标签上多次打开此页面而没有注意到, 这导致我的php服务请求过多, 有没有办法我可以设置它,所以一旦重新打开页面,它将阻止旧页面发送请求?

谢谢, 拉米。

2 个答案:

答案 0 :(得分:1)

在现代浏览器中,从IE10开始,您可以使用Visibility API来确定选项卡是否处于活动状态,并且仅在活动选项卡中保留轮询,如下所示

var hidden, visibilityChange, timer;

if (typeof document.hidden !== "undefined") {
    hidden = "hidden";
    visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
    hidden = "mozHidden";
    visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
    hidden = "msHidden";
    visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
    hidden = "webkitHidden";
    visibilityChange = "webkitvisibilitychange";
}

function handleVisibilityChange() {
    if (document[hidden]) {
        stopAjax();
    } else {
        startAjax();
    }
}

document.addEventListener(visibilityChange, handleVisibilityChange, false);

function startAjax() {
    timer = setInterval(function() {
        $.ajax(options);
    }, 4000);
}

function stopAjax() {
    clearInterval(timer);
}

答案 1 :(得分:0)

您可以在上次收到用户请求时向用户机器和服务器上写入cookie。如果它早于4秒,那么您不会处理此请求。