网页性能优化的9个方法
合并操作
- DOM的多个读写操作(或多个写操作),应该放在一起。不要两个读操作之间加入一个写操作。
- 不要一条条的改变样式,而要通过改变class,或者csstext属性,一次性的改变样式
缓存
- 如果某个样式是通过重排得到的,那么最好缓存结果。避免下一次用到的时候,浏览器又要重排
操作非真实DOM
- 尽量使用离线DOM,而不是真实的网面dom,来改变元素样式。(比如,操作Document Fragment对象,完成后再把这个对象加入DOM。再比如,使用 cloneNode() 方法,在克隆的节点上进行操作,然后再用克隆的节点替换原始节点。)
- 使用虚拟DOM的脚本库,比如React等。
改变操作dom的属性
- position属性为absolute或fixed的元素,重排的开销会比较小,因为不用考虑它对其他元素的影响。
- 只在必要的时候,才将元素的display属性为可见,因为不可见的元素不影响重排和重绘。另外,visibility : hidden的元素只对重绘有影响,不影响重排。
- 先将元素设为display: none(需要1次重排和重绘),然后对这个节点进行100次操作,最后再恢复显示(需要1次重排和重绘)。
自定义渲染
- 使用 window.requestAnimationFrame()、window.requestIdleCallback() 这两个方法调节重新渲染
学习链接:http://www.ruanyifeng.com/blog/2015/09/web-page-performance-in-depth.html