将ajax请求限制在单个页面上


Limit ajax requests to a single page

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

谢谢,Rami .

在IE10及以上版本的现代浏览器中,您可以使用可见性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);
}

您可以将cookie写入用户机器,并在上次收到用户请求时在服务器上检查。