监控浏览器tab切换或最小化事件
背景:最近遇到1个项目,业务方调用了后端1个开销较大的接口,用于页面实时监控一些关键指标,页面是自动定时请求接口刷新数据,随着用户的增加,后端压力比较大,分析发现,很多用户日常使用过程中,并不是一直盯着屏幕看,有时候人离开了(比如下班),或者把监控页切到后台或最小化,干其它事去了,但是页面上的定时请求仍然在一直跑着,造成了相当一部分无用请求。
优化思路:当浏览器tab最小化,或切到后台时,停止自动刷新,等切回来时,再恢复自动刷新。
示例代码如下:
1 <script>
2
3 let timer = setInterval(() => {
4 console.log("开始自动刷新(每5秒获取数据)...", new Date())
5 }, 5000)
6
7 console.log("timer1:", timer)
8
9 // 监听浏览器切换事件
10 document.addEventListener('visibilitychange', () => {
11 // 离开当前tab标签(不管是切到其它tab,还是最小化)
12 if (document.visibilityState === 'hidden') {
13 console.log("离开当前tab:停止自动刷新,clear timer:", timer)
14 clearInterval(timer)
15 timer = -1
16 } else {
17 // 回到当前tab标签
18 console.log("回到当前tab:")
19 //延时2秒后,恢复自动刷新
20 setTimeout(() => {
21 //判断上1次的timer是否已被清除
22 if (timer < 0) {
23 timer = setInterval(() => {
24 console.log("恢复自动刷新(每5秒获取数据)...", new Date())
25 }, 5000)
26 console.log("timer2:", timer)
27 }
28 }, 2000)
29 }
30 });
31 </script>
监控浏览器tab切换或最小化事件的更多相关文章
- 监听浏览器tab选项卡选中事件,点击浏览器tab标签页回调事件,浏览器tab切换监听事件
js事件注册代码: <script> document.addEventListener('visibilitychange',function(){ //浏览器tab切换监听事件 if( ...
- Uipath 浏览器页面最大化和最小化
文章来源东京IT青年前线http://www.rpatokyo.com/ Uipath 浏览器页面最大化和最小化 浏览器在关闭时会自动记忆上次浏览器关闭时窗口的小,下次再次会以同样的大小打开.机器 ...
- 监听浏览器tab切换
监听浏览器切屏 为了完成验证用户在切换浏览器tab时进行登录再次认证需求需要监听浏览器切换窗口 if (document.hidden !== undefined) { document.addEve ...
- 【Delphi】最小化事件捕捉
添加一个ApplicationEvents组件在窗体,然后处理其OnMinimize事件和OnRestore事件即可.
- (原创)如何搭建PLC+上位机监控系统达到成本的最小化?
以西门子PLC举例; 西门子PLC有几个型号:S7-200SMART,S7-1200,S7-300,S7-400,S7-1500,价格从低到高. 1个项目中要求的IO数量:600点的DI+DO,若干个 ...
- C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件
1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小 ...
- 浏览器,tab页显示隐藏的事件监听--页面可见性
//监听浏览器tab切换,以便在tab切换之后,页面隐藏的时候,把弹幕停止 document.addEventListener('webkitvisibilitychange', function() ...
- C#编写最小化时隐藏为任务栏图标的 Window appllication.
1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小 ...
- NotifyIcon 将窗口最小化到托盘
1.设置窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小化事件(首先需 ...
- delphi模态窗体最小化会隐藏的问题
在使用delphi创建模态窗体的时候最小化窗体会导致最小化的窗体不可见,再次点击主窗体才会显示. 在这个模态窗体中增加以下函数 procedure WmSysCommand(var msg: TMes ...
随机推荐
- 亚马逊aws_access_key_id和aws_secret_access_key利用
00X01 信息泄露 敏感信息泄露,例如环境变量.例如,为了配置AWS CLI,需要设置以下环境变量: $ export AWS_ACCESS_KEY_ID=AKISIOSFODNN7EXAMPLE ...
- 【经验】博客|Windows下,一键安装和部署 hexo-admin 插件(Hexo 静态博客)
1. 在博客根目录下运行下列指令 npm install --save hexo-admin -y echo "hexo clean && hexo g -d"&g ...
- HarmonyOS Next实战教程:实现中间凹陷的异形tabbar
今天要和大家分享的实战案例是实现中间凹陷的tabar 前些天在做墨迹天气的时候看到了这种异形的tabbar,看起来比较有挑战性,因为鸿蒙版的墨迹天气app还没有这个东西,我决定尝试做一下. 系统的Ta ...
- 神经网络-反向传播BP算法推导
还是用前向算法的图, 然后仔细一看分类输出, 发现好像错了, 这该如何去反向修改权值呢? 因其是网络结构, 改变一点, 必然会引起一连串的改动, 这个过程, 如何来描述呢? 数学推导 声明变量 首先, ...
- AI 狂飙时代,开源项目的新机遇?
我每天都会刷 GitHub 热榜,围观全球开发者们都在捣鼓啥新鲜的玩意儿.我真切地感受到 AI 的浪潮汹涌而至,它正以一种摧枯拉朽(这个词可能有点猛,但感觉就是这么快!)的速度,改变着软件开发行业,同 ...
- 高性能深度学习推理引擎 -- OpenPPL
OpenPPL OpenPPL是商汤基于自研高性能算字库的开源深度学习推理平台,能够让人工智能应用高效可靠地运行在现有的CPU/GPU等计算平台上,为云端场景提供人工智能推理服务 OpenPPL基于全 ...
- 洛谷题解:B4152 [厦门小学生 C++ 2022] 方阵排序
题目传送门. 输入 #1 3 5 50 65 70 80 90 90 95 100 输出 #1 9 8 7 6 5 3 3 2 1 思路 把问题转化为求一个数在一堆数里的排名. 这时候直接用二分查找, ...
- HDE演讲---RN应用的鸿蒙化适配经验分享
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- Windows安装MySQL常见错误
错误1:提示缺少Visual Studio 2019 x64 Redistributable 现象: 在windows系统上使用Mysql8以上的msi进行安装时,可能提示缺少Visual Studi ...
- 论文解读:Aging with GRACE: Lifelong Model Editing with Discrete Key-Value Adapters
论文发表于人工智能顶会NeurIPS(原文链接).当前的模型编辑器会因多次编辑损害模型性能,提出用于连续编辑的通用检索适配器(General Retrieval Adapters for Cont ...