我有一个显示大量图表的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>
答案 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分钟时使用该页面,它将不会中断用户。