Http 304收到申请心跳

时间:2015-08-17 01:20:01

标签: jquery http session

我正在尝试使用jquery实现应用程序心跳。

我的更改的想法是,我将应用程序会话超时从30分钟减少到10分钟,但每2分钟(120秒)实现一次jquery应用程序心跳。当浏览器打开时,心跳将避免用户收到应用程序超时,但如果浏览器关闭,则会话应在10分钟内超时。

我使用jquery实现了我的心跳,如下所示......

var heartbeatInterval = 120000; // Send heartbeat every 2 mins
var heartBeatTimer = null;
var retryCount = 0;
var maxRetries = 10;

$().ready(function() {     

    // register heart beat to the server to keep the session alive.
    heartBeatTimer = setInterval(function() {
        $.ajax({
            url: heartBeatAjaxServletUrl,
            type: 'GET',
            error: function(data) {
                // The server may be down for the night or there may be a 
                // network blip. As such try to send the heart beat 10 times
                // then if still failing kill the heartbeat.
                retryCount = retryCount + 1;
                if (heartBeatTimer != null && retryCount >= maxRetries) {
                    clearInterval(heartBeatTimer);
                }
            },
            success: function(data) {
                // Once we have a successful heartbeat reset the retry count.
                retryCount = 0;
            }
        });
        // When communication with the server is lost stop the heartbeat.
        }, heartbeatInterval);  
});

当我打开Internet Explorer开发人员工具中的“网络”选项卡时,我可以看到心跳正在运行,但我得到的响应是304而不是200。当我对304进行一些研究时,这个响应代码的解释与http缓存有关。说实话,我有点不确定。

enter image description here

但问题的症结在于,无论心跳如何,浏览器打开时我的用户会话都会超时。我猜这意味着我每两分钟发送的心跳回来并没有真正击中服务器?

有人可以帮我解释一下这里可能会发生什么,以及我的会议是否超时?

感谢

1 个答案:

答案 0 :(得分:1)

您可以使用cache:false选项将时间戳附加到网址,从而使其唯一

参考$.ajax docs