-1

我正在构建一个交互式页面,其中显示了一个聊天框和一个项目列表。

我打算使用 JQUERY 的 .post() 函数每 30 秒更新一次,但我意识到许多用户每天 24 小时都在选项卡中打开网页,这给服务器造成了沉重的负担。

为了防止这种情况并优化我的资源,我希望仅当用户在页面上处于活动状态时才每 30 秒执行一次数据库轮询;在被动情况下,我想要一个 5 分钟的投票。

我怎样才能做到这一点?(我正在使用 PHP 和 MYSQL)

4

2 回答 2

0

也许您可以创建一个基于onScroll事件的函数?但我想这取决于你对“活跃”的定义是什么。

于 2013-05-21T17:26:17.160 回答
0

也许尝试检测光标位置的变化。

  1. 在页面加载开始 setInterval 方法向 PHP 发送请求
  2. 添加额外的 setInterval 以检查用户光标是否正在移动
  3. 如果不等待一段时间,然后清除 1 个间隔。
  4. 如果是,则允许间隔正常工作。

如果用户转到其他选项卡,我不确定如何使用光标位置检查方法。我会为你准备测试(只有js)

编辑:

W3C 实际上开始page visibility作为文档属性工作:http ://www.w3.org/TR/page-visibility/

但现在是更好的解决方案。看看这个答案:https ://stackoverflow.com/a/1060034/390747

于 2013-05-21T17:42:26.753 回答