到现在工作加上实习差不多一年半了,实习了两家公司,正式工作又是一家公司,都或多或少遇到一些性能优化的工作,包括面试也经常遇到。就简单写写,写的不好请多多包涵!
当时实习第一个任务就是安排给了一个性能优化(那时候真的很菜不会看任何性能指标也不懂接口优化,也不敢问就一直拖着天天加班看,最后还是导师带着写完了...) 这个性能优化主要针对于进入页面后,对用户体验,加载时间这两个方面进行优化:
- 用户体验:
- 比如增加骨架屏,或者增加加载提示,或者渐变动画,但这里不是在第一次进入这个系统而是某个功能页面,所以渐变动画就不考虑了,参考了一下其他最新页面的做法都是增加骨架屏,所以这里直接沿用之前其他页面的做法就可以(CV大法好啊)
- 页面功能按钮增加防抖(接口慢了就喜欢一直点点点,体验非常不好),这里防抖不过多赘述,直接在点击功能里面加或者直接套用一些js库的方法就好
- 加载时间: 从接口和资源优化两个地方进行考虑
- 接口优化,当页面进入时请求接口数量较多,异步请求需要等待,请求加载时间就会比较长。这里可以思考,哪些请求是一进页面就需要请求的(必要数据展示)?哪些数据是上一个页面请求过存进store里的?哪些请求可以合并到一起来请求?(比如使用promise.all方法来进行)。这样思考过后大概就有思路了,把按需加载的请求挪到后面,比如点击按钮展示数据的时候在触发对应接口,异步的请求看是否有前置依赖的接口,没有的话一起同时发送。
- 资源优化,不过多赘述就是图片文件优化那些,因为很多图片资源都是放服务器进行的所以这里不用考虑了,但是也有手机端的适配,手机端就可以做按需加载了。
不得不说当时还是学到太多了,因为什么都不会赶鸭子上架,硬去学着看懂了。 优化完之后到页面上看performance和network两个部分,network看接口时间变化,performance看指标变化
下次接着写... 好了我来接着写了
第二次实习里面的优化主要针对于代码当中的逻辑,一个功能用多种方式都可以实现,那怎么样做到更优更节省资源就是一个需要考虑的点
- 还是防抖和节流,一定要好好练手写啊...使用频率有点高
- 我们知道在react中可以用 useMemo 和 useCallback 来进行优化,可惜第二段里面我用的Angular实在不是很熟,加上当时Angular写的版本实在太老了(Angular8),后面用Angular18直呼好用太多了!所以感觉本身Angular升级带来的优化就挺多的了
- 项目中使用发布订阅模式之后记得销毁
- 那些常见的优化:使用onpush变更检测策略 ,只有在输入检测值才发生变化;以及使用轻量级管道,比如不在管道内做复杂操作,插入或者改变什么;开启AOT编译。
好了接着下次写第三次工作里面的优化