我有一个Live Feed JQuery框,每10秒更新一次,并将网站最新评论放在首位。这工作正常:jquery发出Ajax请求,调用PHP,返回新项或无。
此框就像一个侧边栏,它位于我网站的每个页面上。我的问题是,如果用户在网站上打开了很多页面,他打开的每个标签都会自动刷新,直到他关闭该标签。因此,即使Live Feed已经过优化,并且其背后的SQL查询速度很快(每个查询0.0005秒),因此每个打开许多页面的几十个用户都会成为问题。此外,如果用户使用几个打开的标签打开浏览器,并开始浏览其他地方,或观看电影,他们将永远更新,或直到他关闭它们。
那么对此有什么好处?只有在其标签/窗口可见/活动时,才能更新我的Feed吗?是否有一个事件如果它处于非活动状态并且现在再次激活会触发?
答案 0 :(得分:0)
尝试在窗口对象上添加onFocus事件以触发更新并添加onBlur以停止更新实时源。
由于你使用的是jquery,你可以这样做
$(window).('focus',function(){
//do updates
})
$(window).('blur',function(){
//stop updates
})
答案 1 :(得分:0)
虽然我使用了这个Detecting focus of a browser window并且我在这里分享了所有需要这个而没有jquery的人我会接受上面的答案,因为它似乎是我原始问题的一个优雅而明确的解决方案。