你如何每15分钟从服务器刷新和html页面

时间:2013-12-17 19:27:02

标签: javascript jquery ajax

我有一个显示大量图表的html页面。该网站与Ventor SSO应用程序集成。您第一次访问该站点,它进入sso身份验证,一旦通过身份验证,您就进入了该站点。

此供应商SSO中间应用程序有30分钟的标题超时会话。如果用户启动该站点并登录并保持空闲状态30分钟,则该站点将停止运行。用户需要再次登录SSO才能使用。

我的问题是这个。如果用户登录并且不使用该站点30分钟,并且如果他/她尝试通过调出URL或刷新浏览器再次使用它,则该页面没有做任何事情。浏览器没有将页面转发到SSO登录,而是使用浏览器缓存。

为了解决这个问题,我编写了这个脚本,每15分钟一次,页面将从服务器刷新。不知道出了什么问题,但我确实看到它有时会工作,浏览器仍然试图从浏览器缓存中加载页面。我在下面做的是对的吗?还有其他想法可以解决这个问题吗?

<script>
$(document).ready(function(){
jQuery('div').live('pagehide', function(event, ui){
var page = jQuery(event.target);

if(page.attr('data-cache') == 'never'){
page.remove();
};
});
setTimeout(function(){ window.location.href = window.location.href; }, 900000);
});
</script>
<script>

3 个答案:

答案 0 :(得分:2)

您可以在标题中使用元标记。

<head>
   <meta http-equiv="refresh" content="900">
</head>

这是900秒等于15分钟。

答案 1 :(得分:1)

$(document).ready(function(){

  setTimeout('window.location.reload();', 90000);
    // OR
   // setTimeout('location.reload(true);', 5000);   

  jQuery('div').live('pagehide', function(event, ui){
     var page = jQuery(event.target);

      if(page.attr('data-cache') == 'never'){
            page.remove();
      }
  });

});

另外,我不建议使用live

答案 2 :(得分:0)

您只需将ajax请求发送到服务器上不执行任何操作的页面。

function continueSession() {
    setTimeout(function(){
        $.get("somepage.php").always(continueSession);
    },15*60*1000);
}
continueSession();

这应该足以让会话在页面打开时继续运行,并且如果用户实际在15分钟时使用该页面,它将不会中断用户。