-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 145 题:前端项目如何找出性能瓶颈 #300
Comments
前提:项目中引入了很多第三方库,突然有天测试发现某个可视化页面长时间不关闭会造成浏览器奔溃 |
性能监控体系, chrome perfermance devtools, 工作经验 |
遇到问题了,而且还是性能问题,瓶颈就是当前无法很好的解决。 |
分享一下我近期的经验,之前项目也碰到过用起来很卡的情况,就是用element ui的tab切换组件时,点击tab切换非常卡,非常耗时,在排除了网络请求和js代码执行时间过长等原因后,跑了一次perfermance,结果发现大部分时间都花费在了 DOM GC上了,分析了下原因可能时dom结构太多导致每次tab切换渲染太耗时了。由于我每个tab里面的html结构都一样,都是一个table,只是每次tab切换时请求的数据不一样,我就把table抽离出来了,放到tab组件外面,然后tab里面就空了,就没有那么多dom了,tab切换就不卡了,很流畅。(ps:tab有20-30个切换选项,本人语文水平不行,描述的不清楚,望轻喷。) |
根据Chrome的perfermance 判断哪里用的时间比较多,是DOM重绘还是js事件执行 |
我觉得应该首先理一理会造成性能损耗的一些场景:
|
我觉得其实也可以在业务层面考虑,是否有必要耗费很多性能去实现某一个交互,这个交互可能会很耗费性能,且比较难以优化的,那么就要权衡一下.或者有没有别的其他方式的交互,不需要耗费很多性能的交互呢. |
你写代码的时候没 考虑好呀 |
性能瓶颈一般是表现在用户体验方面,比如页面加载过慢,动画卡顿,交互延迟等等,具体问题具体分析。 |
我最近遇到的,vis的关系图,在跑大数据量时,浏览器卡死,手动销毁也没有效果,,通过chrome performance监控,发现是绑定了太多的监听,在销毁时把监听也都销毁了,,但是有关渲染时的卡顿,目前还没找到好办法(已经去掉了物理vis本身的物理引擎) |
大数据量列表渲染的时候,比如点餐,外卖,电商分类列表等。当数据量达到一定程度且每条数据里面的都有对应的效果和图片以及操作等等。这时候上下拉的时候就会出现延迟,甚至点击无反应。 这时候就是前端(浏览器)渲染的性能瓶颈了。 当然解决的方式可以把数据切块,分块进行加载,加载到某一块的时候取某一块的数据,其他的隐藏,这样则可以解决大数据列表的问题。 |
小程序的话,还可以通过开发者工具的Audits来查看。 |
现在怎么样了,我也有这个问题 |
第三方性能测试网站:https://gtmetrix.com/ |
不可见 tab content 切换的时候销毁吗? |
为什么抽出来就不卡了 |
首先先判断哪里出现了性能瓶颈 1.资源加载 -> 首次需要下载的量是否过大 是否需要懒加载 缓存配置是怎样的 单页面是否过大需要分页 |
如果依赖大量的计算的话,也可以采用纯函数的形式,将函数的计算结果缓存起来,只在第一次call的时候运行,之后的取值都从缓存里面拿 |
为什么遇到性能瓶颈,真的有必要去解决吗?个人觉得可以从两个维度去思考: |
性能分析、定位
The text was updated successfully, but these errors were encountered: