页面卡顿的原因及排查

本文探讨了导致页面卡顿的两大因素:渲染不及时和内存占用过高。针对渲染问题,建议减少网络请求,避免频繁DOM操作,合理使用缓存策略。对于内存问题,关注全局变量、闭包、定时器可能导致的内存泄露,并提供了解决方案,如及时清理引用,正确管理定时器,解除事件绑定等。通过浏览器的Performance面板,可以监控和定位内存泄漏,从而优化页面性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面卡顿的原因、排查及解决方案

一、渲染不及时,页面掉帧

1》网络请求太多,请求返回的数据比较慢

接口返回慢的话,后端做些优化;前端适当做些缓存,减少不必要的重复的请求

可以从调试工具中的Network查看请求情况

2》回流和重绘多

减少dom的操作,适当使用keep-alive,v-show等

平时要养成良好的编码习惯

3》dom节点太多,渲染的比较慢

如果是数据确实太大的话,可能要从业务上调整一下,展示可能要改变下,比如说做分页什么的

从数据上和页面显示上可以查看

二、网页内存占用过高,运行卡顿

有可能内存泄露

1》全局变量引起的内存泄露

标记清理;离开作用域自动标记为可回收,在垃圾回收期间被删除

全局变量不会回收,局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁;只要被另外一个作用域所引用就不会被回收 (闭包)

所以我们要尽量减少全局变量的使用,使用完引用类型的数据后解除引用

2》闭包引起的内存泄露

因为引用了其他作用域的变量,所以变量不会被回收

即使解除引用

3》定时器引起内存泄露

window.setTimeout(),window. setInterval()

清理定时器,这时定时器需要给他取名了

4》dom删除时没有解绑事件
5》循环引用

是否存在内存泄露的判断方式

调试工具的Performance

在这里插入图片描述

折线图部分

js heap:js占用内存大小,有没有内存泄露主要看这个(箭头指向的蓝色的线)

如果这条蓝线一直增加那么肯定存在内存泄露,那么可以到Memory中查看堆快照数据

底部的时间总览图形,查看各部分花费的时间:

在这里插入图片描述
loading:网络请求和html解析时间

scripting:js执行时间

redering:重排时间,计算尺寸,位置信息

painting:绘制时间

system:系统占用时间

idle:空闲等待时间

memory面板

在这里插入图片描述
在这里插入图片描述

我们可以多次快照进行对比,也可以看单次快照的趋势

### 关于EasyPlayer分屏播放时出现的卡顿问题 当使用EasyPlayer实现多路视频分屏播放时,如果遇到卡顿现象,通常可以从以下几个方面来排查并解决问题: #### 优化网络连接质量 确保用于传输视频流的网络环境稳定可靠。对于实时性较高的应用场景,建议采用低延迟、高带宽的网络链路,并尽可能减少中间节点的数量以降低数据包丢失率和抖动情况的发生。 #### 调整浏览器端配置参数 适当调整HTML页面中的`<video>`标签属性以及JavaScript API调用方式可以帮助改善用户体验。例如设置合理的缓冲区大小、启用硬件加速等功能均有助于提高解码效率[^1]。 ```javascript const playerOptions = { autoplay: true, controls: true, fluid: false, // 不自动适应容器尺寸变化 preload: 'auto', }; // 初始化多个实例时注意区分不同的ID for (let i = 0; i < videoUrls.length; ++i) { const playerId = `player-${i}`; new EasyPlayer(playerId, { ...playerOptions }, () => { easyPlayers[i].setSrc(videoUrls[i]); }); } ``` #### 减少不必要的资源消耗 避免在同一页面内加载过多未使用的脚本库或样式表;关闭不必要开启的功能模块(如统计上报等),从而减轻前端渲染压力。另外,在创建多个播放组件实例前务必确认已经移除了重复引用项以防潜在冲突[^2]。 #### 实施服务器侧性能优化措施 针对长时间运行的服务程序定期执行垃圾回收操作可有效防止内存泄漏问题发生。同时合理规划存储策略,及时清理不再需要的历史记录也有利于维持整体系统的健康状态[^3]。 通过上述几个方面的综合考虑与实践应用应该能够显著缓解乃至彻底消除EasyPlayer在进行多窗口并发播放过程中所面临的卡顿困扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值