减少或避免repaint,reflow
也可以理解为减少dom元素的操作
页面重绘:颜色,字体发生一些变化就会触发浏览器 repaint,位置发生变化例如修改了top,就会触发浏览器reflow,reflow的dom元素开销的成本从感官上讲明显是大于repaint,《《高性能的javaScript》》把dom开销比作是一座链接html和js的一座桥梁,每过一次就会收一次过路费,所以我们要尽可能减少使用dom,移动端对dom操作更敏感,浏览器端性能比pc端差,尤其用dom实现动画时,体现的尤为明显,你也可以可理解为过路费要的更高
页面回流:
尽量缓存所有可以缓存的数据
相比pc,html5时代之前pc用http协议的response headers进行缓存,设置Cache-Control;到了html5时代,我们用appcache,localStorage来存取一些远端的数据,但是他只能存储字符串,如果想存对象的话,我们就要把它序列化,sessionStorage存储是伴随着你的会话来的,网页关了以后就清零了,更复杂的是indexDB,相对于localStorage来说他可以存更大量得数据,可以给数据建索引。
使用css3 transform代替dom操作
减少了dom开销
不要给非static元素增加css3动画,浏览器的性能开销会成倍的增加,跟浏览器底层实现相关的
适当使用硬件加速
用手机设备GPU来做页面得渲染,一个最简单的硬件加速的例子就是用canvas来画一些图片,就触发了硬件加速,但也不能过多实现。不用canvas也可以用硬件加速,所有具有transform css3属性的变换层都会做硬件加速,如果不想让他有任何变化,我们可以用translate 3d 属性,并把他所有的值都设成0,我们只是单纯的想让他具有硬件加速的功能,这时候就会开启GPU的能力做硬件处理