Vue 性能优化经验总结

最近用Vuejs重构了公司的一个项目,项目是个Web的素材管理系统,相当于Web版windows的资源管理器,遇到了不少性能的瓶颈,优化过程中积累了一些经验,特记录下来以供各位园友参考:

  1. 慎用deep watch:
   第一次遇到性能问题是文件夹数据量稍大时,操作素材会感觉到明显的延迟和卡顿,通过chrome的performance分析发现是使用watch时,配置了deep等于true,由于这个文件系统是个大的tree状对象,每个素材对象又相互引用,导致任何一份数据更新都会通知到这个watcher。复盘分析对比图如下:
  deep:true, 明显延迟卡顿


  deep:false, 流畅


  2. 使用更好的方式来解决问题:
  第二次性能问题是在数据量超过1500左右时,加载元素耗时变久,操作开始慢慢变卡,检查发现此时页面内存暂用升高,dom元素数量巨大,附上16000个素材的dom数,这个时候系统已经完全不能用了,卡出天际。


  优化方案,只渲染用户能看到部分的素材,用户滚动滚动条时才动态的切换素材,产生一种所有素材都已经渲染了的感觉。优化后的dom数如下,使用基本流程,滑动滚动条还是有明显的不流畅。


  3. 尽可能的减少watcher的数量
  在上面16000个素材的情况,vue至少会创建16000个watcher,实际情况下会多得多,这样的后果就是操作时js执行会特别耗时,这里我优化的办法是把素材数据单独保存到一个js变量中,只把需要展示给用户的那一屏数据拿出来给vue监听,这样大大减少了wather的数据,原理同2,现在16000个素材无论是操作还是滑动滚动条一点都没有卡顿的感觉了。

结语:之前在哪看过一句话,大意是不要老想着从技术的角度去解决问题,要试着从设计上从方式上去规避问题,挺有感触的。

时间: 2024-08-07 19:44:49

Vue 性能优化经验总结的相关文章

20多条MySQL 性能优化经验分享

当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 这里最主要

游戏开发性能优化经验总结

优化概论 说起游戏的优化,在游戏开发中经常分为这几步: 首先要确定游戏中经常会出现哪些问题 – Profile 然后确定在哪些方向进行性能优化 – Analyze 最后再尽可能将问题逐个解决 – Solve 游戏开发中一定是先做工具,进行Profile,再进行优化,所以,说优化就不得不再扯一下Profile 常见的工具有一些是引擎和IDE自带的,比如Unity自带的Profiler,就包含了CPU,GPU,Memory等等各式各样的性能分析工具,其他的比如GPA,Xcode Instrument

web应用性能优化经验总结

常见性能优化要求      在我经历的性能优化案例中,常见的问题都是这样开始的: a) 前台访问很慢,请帮忙分析优化 b) 用户对性能很不满意,再不解决就要投诉 c) 数据库负载很重,请帮忙分析一下 d) XXX功能打开需要1分钟,请帮忙分析一下.而等我访问这个功能的时候,可能几秒钟就返回:等你满怀困惑的找到问题提出人员,如果足够幸运的话,可能他告诉你要选择什么查询条件,问题能够重现:当然另一个可能是他也是转述用户的话. 在接到这些性能优化要求的时候,我都希望能够了解下面的信息以判断问题的类型,

Unity技术支持团队性能优化经验分享

https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247490321&idx=1&sn=f9f34407ee5c5d0d1edb478981299108&chksm=fe1e2fbac969a6acee4eddb865d161fe09400c9147794c777ea4087e59f1e5fc3ccca5d1d0dd&scene=21#wechat_redirect 在10月26日的Unity独立游戏日上,

WPF性能优化经验总结

WPF性能优化一.Rendering Tier 1. 根据硬件配置的不同,WPF采用不同的Rendering Tier做渲染.下列情况请特别注意,因为在这些情况下,即使是处于Rendering Tier 2的情况下也不会硬件加速.(不全,其余请查阅SDK) WPF性能优化二.布局和设计 1.尽量多使用Canvas等简单的布局元素,少使用Grid或者StackPanel等复杂的,越复杂性能开销越大. 2.建立逻辑树或者视觉树的时候,遵循Top-Down的原则. WPF性能优化三.图像 1. 对Im

浅谈Vue 项目性能优化 经验

我优化公司的项目总结的几点: 1.先查看引入的图片大小,如果太大了,可以压缩,压缩路径:https://zhitu.isux.us/ 2.代码包优化, 待下项目开发完成.进行打包源码上线环节,需要对项目开发环节的开发提示信息以及错误信息进行屏蔽,一方面可以减少上线代码包的大小:另一方面提高系统的安全性.在vuejs项目的config目录下有三个文件dev.env.js(开发环境配置文件).prod.env.js(上线配置文件).index.js(通用配置文件).vue-cli脚手架在上线配置文件

VUE性能优化总结

1.v-show,v-if 用哪个? 在我来看要分两个维度去思考问题: 第一个维度是权限问题,只要涉及到权限相关的展示无疑要用 v-if, 第二个维度在没有权限限制下根据用户点击的频次选择,频繁切换的使用 v-show,不频繁切换的使用 v-if, 这里要说的优化点在于减少页面中 dom 总数,我比较倾向于使用 v-if,因为减少了 dom 数量,加快首屏渲染,至于性能方面我感觉肉眼看不出来切换的渲染过程,也不会影响用户的体验. 2.不要在模板里面写过多的表达式与判断 v-if="isShow

vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新. nextTick的触发时机: 在同一事件循环中的数据变化后,DOM完成更新,立即执行nextTick(callback)内的回调. 应用场景: 需要在视图更新之后,基于新的视图进行操作. 以上出现了事件循环的概念,其涉及到JS的运行机制,包括主线程的执行栈.异步队列.异步API.事件循环的协

Oracle Proc编程性能优化经验

Proc 是Oracle提供的一种数据库操作的AP.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一些Proc操作存在效率低下的情况,本文介绍一些Proc一些编译经验,希望能给大家提供参考. 下面以一个简单需求进行举例说明: 要求把DB1里面一张数据表tbl_hch_test的数据导出到DB2的同名表. 最快的方法当然是使用oracle的数据泵工具进行压缩导出再导入,但expdp/impdp对数据库