【页面无响应】Web页面经常无响应前端如何定位与优化(已解決)

news2025/8/2 18:08:55

【写在前面】客户现场应用我们的系统时候,发现用着用着就出现1个页面无响应现象,给客户带来极其不好的体验,尤其是当重要工作汇报演示时,就给我看无响应,浏览器崩溃?这样对产品的发展无疑是致命的伤,那么如何去面对,又如何解决呢?且听我细细讲解。

目录

  • 场景复现
  • 1、问题定位及方向
    • Web端设备配置
    • CPU占用率
    • 内存占用率
  • 2、如何解决
    • 2.1 释放缓存
      • A、在ajax请求之前(beforeSend)添加
      • B、在ajax设置属性cache为false
      • C、在jsp或html头部<meta>标签内添加
      • D、请求结束后回收资源
    • 2.2 定时器优化
    • 2.3 代码优化排查
    • 2.4 同步阻塞排查
  • 3、彩蛋直通

涉及知识点: web优化,页面响应,cpu和内存的占用优化,前端页面响应优化,内存泄漏

场景复现

页面问题效果如下:
在这里插入图片描述

1、问题定位及方向

根据之前的开发经验,我建议大家从这三个方向去出发:

Web端设备配置

这个主要看你访问端的设备配置是否支持程序的运行,有些系统对配置有个最低标准的说明,比如4核8G,磁盘要求128G,显卡也有基础的要求。
要是你的配置太低了,市场都淘汰的机器,去部署一个大的运维系统,那么肯定也会出现无响应的现象。

CPU占用率

主要针对当前页面的CPU占用率,很多人肯定知道任务管理器(ctrl+alt+delete),但是很少有人知道查看浏览器单个页面占用CPU在哪看,按照如下操作,点击浏览器(谷歌)右上角的三个点,然后点击更多工具,再点击任务管理器,如下所示:
在这里插入图片描述

按照上图操作后,你就可以看到如下所示的各个单页面运行时的cpu占比和内存占比(动态变化的)
在这里插入图片描述

内存占用率

和上面一样我们可以通过看内存的变化,比如说你点击不同的菜单时候,你发现这个内存一直在飞速增长,这就说明了,存在内存泄漏的问题,那么针对你写的代码逻辑需要去排查一下。
代码阻塞(定时器,死循环,三方组件)
代码阻塞这方面也是很难去发现的,但是我教大家一个方法,针对页面我们可以通过代码删除定位法去#发现问题,最终总会找到那个性能很差的代码段,针对这个代码段进行优化。

2、如何解决

在这里插入图片描述

其实核心问题上面也说了,针对优化我归纳成以下两点(释放缓存及优化阻塞代码):

2.1 释放缓存

我们可以从这些方向出发去实现:

A、在ajax请求之前(beforeSend)添加

xhr.setRequestHeader("If-Modified-Since","0");
xhr.setRequestHeader("Cache-Control","no-cache");

B、在ajax设置属性cache为false

cache:false,

【效果】由31M降成17M

C、在jsp或html头部标签内添加

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">

【效果】由31M降到8M

D、请求结束后回收资源

在ajax的complate设置XML为null

XMLHttpRequest = null;

总结:增加no-cache确实对内存的消耗带来一定的作用,但是我想还是有增长,点击的次数多了是否会仍然存在页面无响应现象?

2.2 定时器优化

首先我们了解一下定时器执行顺序,它是一个异步执行函数。
尤其是我们页面有定时刷新功能,很多人都会想到应用setInterval,但是setInterval会存在回调积累,尤其是频繁操作dom,使得页面不断的repaint和reflow,特别消耗资源,尤其是遇到死循环直接GG。
如何合理应用setInterval呢?
A、不使用时候清除或者定时清除clearInterval
B、使用过程中嵌套setTimeout(func,0)使用,有助于释放资源,防止阻塞
setTimeout设置0的主要作用是把func执行体放在队列最后去执行。实际应用如下:

HomeListDataInterval = setInterval(function(){
    console.log("定时器触发次数:"+ (intNum++));
    setTimeout(() =>{doSearch()},0)
}, conTime * 1000);

其实在一定的时间内,或者没有应用这个页面的话应及时清除HomeListDataInterval定时器

clearInterval(HomeListDataInterval);

2.3 代码优化排查

我采用的是代码一段一段的注释的方式去定位的,每次注释后然后再看CPU和内存的占用率,一旦出现明显的下降,说明你注释的那些代码内肯定存在毒瘤,所以说针对性优化,之后你肯定会发现速度快的飞起。
通过排除我发现一个问题就是我前端做文字滚动引发的,我是用的是jquery的jquery.liMarquee.js组件,一旦注释了,我的CPU瞬间下降了,后面我就自己重新编写了一个CSS來实现文字滚动样式。

2.4 同步阻塞排查

在ajax请求的时候很多人就为了图方便直接用了async:false属性的设置,确实可以第一时间访问,但是后续所有的进程都会被它堵住,从而会出现响应超时的现象。
就好比是一个公园只有一个厕所,但是那么多人排队,这就堵着进程了,要是有些人能够被安排不同时间段去上厕所,那么对它来说压力就少很多。

3、彩蛋直通

喜欢博主的这篇文章的可以上皇榜支持一下博主哟!!!皇榜入口点击此处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水库大坝安全监测的主要坝体类型介绍

水电站和水库大坝安全的分类中有重力坝、土石坝等不同的大坝形式。就在这里详细水库大坝安全监测按照建造形式&#xff0c;基本上可以分为三类&#xff1a;重力坝、土石坝和拱坝。 &#xff08;1&#xff09;重力坝 重力坝&#xff0c;顾名思义就是利用自身重力来维持坝体稳定…

概率论小课堂:高斯分布(正确认识大概率事件)

文章目录 引言I 预备知识1.1 正态分布1.2 置信度1.3 风险II 均值、标准差和发生概率三者的关系。2.1 “三∑原则”2.2 二班成绩比一班好的可能性2.3 减小标准差引言 泊松分布描述的是概率非常小的情况下的统计规律性。学习高斯分布来正确认识大概率事件,随机变量均值的差异和偶…

linux SPI驱动代码追踪

一、Linux SPI 框架概述 linux系统下的spi驱动程序从逻辑上可以分为3个部分: SPI Core&#xff1a;SPI Core 是 Linux 内核用来维护和管理 spi 的核心部分&#xff0c;SPI Core 提供操作接口&#xff0c;允许一个 spi master&#xff0c;spi driver 和 spi device 在 SPI Cor…

面试官: 谈下音视频同步原理,音频和视频能绝对同步吗?

作者&#xff1a;波哥 心理分析&#xff1a;音视频同步本身比较难&#xff0c;一般使用ijkplayer 第三方做音视频同步。不排除有视频直播 视频通话需要用音视频同步&#xff0c;可以从三种 音频为准 视频为准 自定义时钟为准三种方式实现音视频同步 求职者:如果被问到 放正心态…

C++回顾(十一)—— 动态类型识别和抽象类

11.1 动态类识别 11.1.1 自定义类型 C中的多态根据实际的对象类型调用对应的函数 &#xff08;1&#xff09;可以在基类中定义虚函数返回具体的类型信息 &#xff08;2&#xff09;所有的派生类都必须实现类型相关的虚函数 &#xff08;3&#xff09;每个类中的类型虚函数都需…

云原生系列之使用prometheus监控nginx

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文主要讲解云原生系列之使用prometheus监控nginx 文章收录到 csdn 我是沐风晓月的博客【prometheus监控系列】专栏&#xff0c;此专栏是沐风晓月对云原生prometheus的的总结&#xff0c;希望能够加深自…

Linux系统中指针的详细分析与操作

文章目录 一、指针 二、指针的初始化 三、指针的运算 四、指针与数组 五、指针与字符串 六、函数指针 七、NULL 指针 八、对复杂指针的解释 C 语言指针真正精髓的地方在于指针可以进行加减法&#xff0c;这一点极大的提升了程序的对指针使用的灵活性&#xff0c;同时也…

【Linux】-- 工具介绍 vim_gcc/g++_gdb

目录 Linux中的软件管理工具 – yum 在Linux下安装软件的方式 认识yum 查找软件包 安装 卸载 lrzsz.x86_64 rz sz Linux中的编辑器 – vim vim的基本概念 vim各模式切换 vim命令模式命令 vim底行模式命令 gcc / g gcc / g的作用 gcc / g语法 预处理 编译 汇…

[ 攻防演练演示篇 ] 利用 shiro 反序列化漏洞获取主机权限

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

厦大纪老师chatgpt相关讲座3.7

在线更新数据&#xff0c;迭代学习训练&#xff0c;进而提高模型性能。 比较明显的是API部分&#xff0c;这一步学习的就是intruction,实现人机写作的复杂系统工程 数据充足&#xff0c;维基类似于百度百科 transformer结构更有优势&#xff0c;预测下一个字&#xff0c;模型越…

RK3399平台开发系列讲解(应用开发篇)断言的使用

🚀返回专栏总目录 文章目录 一、什么是断言二、静态断言三、运行时断言沉淀、分享、成长,让自己和他人都能有所收获!😄 📢断言为我们提供了一种可以静态或动态地检查程序在目标平台上整体状态的能力,与它相关的接口由头文件 assert.h 提供。 一、什么是断言 在编程中…

复位和时钟控制(RCC)

目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟&#xff1f; 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a;1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…

51单片机数字电子钟开题报告

目录 选题背景 初步设计方案 芯片的选型 编译环境 关键问题 策略 方案 参考文献 选题背景 数字电子钟是一种受到越来越多人喜爱的钟表&#xff0c;其准确性和稳定性成为设计和研发的重要考虑因素。在现代社会&#xff0c;时间的准确性对于各行各业都非常重要&#xff0…

Http中post/get请求参数接收

1、 Http请求报文 Http请求报文示例图如下&#xff1a; ①是请求方法&#xff0c;GET和POST是最常见的HTTP方法&#xff0c;除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过&#xff0c;当前的大多数浏览器只支持GET和POST&#xff0c;Spring 3.0提供了一个HiddenHttp…

[oeasy]python0100_wintel联盟_intel_微软_microsoft_msDOS_基尔代尔

wintel联盟 回忆上次内容 上次 了解了IBM的 背水一战 IBM 已经不在乎 软硬一体全自主的设计 了而采用了 开放的架构任何 硬件厂商和软件厂商 都可以来合作 以丧失 自主控制力的方式 获得了 对于 PC架构定义的荣誉 最终 后其身而身先外其身而身存 ibm兼容机的开放架构里 有两…

导出GIS | 将EXCEL表格中坐标导出成GIS格式文件

一 前言 EXCEL是我们日常工作学习数据处理的办公软件&#xff0c;操作易上手&#xff0c;几乎人人都会用。EXCEL表格能够处理各种数据&#xff0c;包括经纬度坐标数据&#xff0c;地址数据等等。 有时因工作需要需将表格中地址数据处理为GIS格式的文件&#xff0c;以便能够将数…

Java之内部类

目录 一.内部类 1.什么是内部类 2.内部类存在的原因 3. 内部类的分类 4.内部类的作用 二.成员内部类 1.基本概念 2.成员内部类的注意点 1.成员内部类可以用private方法进行修饰 2.成员内部类可以直接访问外部类的私有属性 3.外部类可以通过对象访问内部类的私有属性 …

量化择时——均线策略及改进方法(第1部分—因子测算)

文章目录道氏理论个股股价走势阶段板块、行业股价走势均线策略交易逻辑均线策略效果测算改进一&#xff1a;设置策略信号偏移量改进二&#xff1a;生成止盈止损信号道氏理论 使用盘面数据&#xff0c;根据计算出的一条或多条均线&#xff0c;判断入场与离场的时机&#xff0c;…

Redis学习(五):事务、持久化及使用Java操作Redis

事务 Redis事务本质&#xff1a;一组命令的集合。一个事务中的所有命令都会被序列化&#xff0c;在事务执行过程中&#xff0c;会按顺序执行。 一次性、顺序性、排他性&#xff01;执行一系列的命令。 Redis单条命令保证原子性&#xff0c;但是事务不保证原子性&#xff01; R…

MySQL面试题-日志

目录 1.MySQL 中常见的日志有哪些&#xff1f; 2.慢查询日志有什么用&#xff1f; 3.binlog 主要记录了什么&#xff1f; 4.Mysql的binlog有几种录入格式&#xff1f;分别有什么区别&#xff1f; 5.redo log 如何保证事务的持久性&#xff1f; 6.页修改之后为什么不直接刷…