性能优化
记录一些性能优化手段,涉及代码、浏览器、构建等
代码方面
重绘和重排
重绘
指重新绘制元素的样式等内容,如颜色,重排
则是由于元素位置
改变后由浏览器进行重新渲染的过程,这个位置可以是元素隐藏、消失、宽高修改等。页面上的内容都是由浏览器引擎进行绘制后展示而来,当元素信息有更改时会进行重新的绘制。比如display
的none
,opacity
的 0
显而易见,重排会进行更多的操作来达到预期的修改,因此需要尽量的减少重排操作,可用重绘进行代替,这是单一的操作上的选择。
每一次的style变更都会引发这样的操作,多次修改就会操作多次。因此尽量合并style操作为一次
防抖、节流
防抖,在预设的时段n内执行函数,若在该时段内未被再次触发即执行,否则重新计时 节流,在预设的时段n内执行函数,无论函数是否再次被触发,在时间n后执行函数
两种函数可以在有极大的操作被大量触发的场景上进行优化。比如在输入框进行即时搜索、滚动事件、浏览器自带的dom事件的触发操作等
异步加载脚本
html文件中的代码从上到下执行,遇到js脚本就会先解析脚本内容,从而导致页面空白。这时可以把脚本相关的内容放到body标签后从而优先渲染标签元素来减少页面空白的时间
现行的构建工具基本会自动处理上面的情况。同时也有异步加载脚本的新写法可以使用,以此减少空白期 。