Javascript 将ajax请求限制为单个页面

Javascript 将ajax请求限制为单个页面,javascript,php,ajax,Javascript,Php,Ajax,我为我的用户建立了一个web管理页面, 此页面包含每4秒调用一次以显示实时信息的ajax, 我的问题是,我的一些用户在不同的选项卡上多次打开此页面而没有注意到它, 这会导致对我的php服务的请求过多, 是否有一种方法可以设置它,使页面重新打开后,它将停止发送请求的旧页面 谢谢, Rami。您可以将cookie写入用户计算机,并在上次收到用户请求时在服务器上进行检查。如果时间早于4秒,则您不处理此请求。在现代浏览器中,从IE10及以上版本,您可以使用来确定选项卡是否处于活动状态,并仅在活动选项卡中

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

谢谢,
Rami。

您可以将cookie写入用户计算机,并在上次收到用户请求时在服务器上进行检查。如果时间早于4秒,则您不处理此请求。

在现代浏览器中,从IE10及以上版本,您可以使用来确定选项卡是否处于活动状态,并仅在活动选项卡中保持轮询,类似于这样

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);
}

您可以测试会话,如果您在低于4秒的时间内有一个会话2次,只需使用一个特殊的返回和一些javascript处理锁定此页面即可;)我不知道你的应用程序,但可能在窗口不活动时不执行这些请求?如果没有人查看内容时不需要刷新内容,请尝试以下解决方案: