600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > web 页面性能优化

web 页面性能优化

时间:2019-10-30 13:04:32

相关推荐

web 页面性能优化

web 页面性能优化

性能优化在视觉上有两个阶段:

加载阶段,能够快速的看到页面(首屏渲染时间);交互阶段,能够快速响应操作(动画效果,接口返回速度等)

加载阶段

加载阶段,是指从发出请求到渲染出完整⻚⾯的过程,影响到这个阶段的主要因素有⽹络和JavaScript脚本。

网络决定资源的下载速度,javascript脚本阻塞dom解析,css脚本不阻塞dom解析(但是如果是放在head的话会阻

塞渲染)

优化策略
减少资源的大小,可以通过webpack打包优化工具,压缩代码,去除注释空格等;如果资源很少可以把资源内联到html中;传输过程可以开启gzip压缩;cdn加速;请求资源个数多的可以开启http2传输协议,增加一次性请求资源的数量和传输速度;如果JavaScript代 码没有DOM或者CSSOM的操作,则可以改成sync或者defer属性;

使⽤async标志的脚本⽂件⼀旦加载完成,会⽴即执⾏;⽽使⽤了defer标记的脚本⽂件,需要等到DOMContentLoaded事件之后执⾏。

同样对于CSS,如果不是在构建⻚⾯之前加载的,可以把资源放在html底部

交互阶段

交互阶段,主要是从⻚⾯加载完成到⽤⼾交互的整合过程,影响到这个阶段的主要因素是JavaScript脚本,次要原因有重绘->重排->合成

布局信息修改(大小,间距,布局方式等)–>重排

非布局信息修改(颜色,透明度) --> 重绘

通过CSS实现⼀些变形、渐变、动画等特效 -->合成

效率:合成>重绘>重排

优化⽅案:原则就是让单个帧的⽣成速度变快

减少javascript脚本执行时间 ⼀种是将⼀次执⾏的函数分解为多个任务,使得每次的执⾏时间不要过久。另⼀种是采⽤Web Workers。你可以把Web Workers当作主线程之外的⼀个线程,在Web Workers中是可 以执⾏JavaScript脚本的,不过Web Workers中没有DOM、CSSOM环境,这意味着在Web Workers中是⽆法通过JavaScript来访问DOM的,所以我们可以把⼀些和DOM操作⽆关且耗时的任务放到Web Workers中去执⾏如果不考虑兼容性可以调用requestIdleCallback这个api可以在浏览器空闲时执行代码,可以把大于一帧运行时间的js放到里面去运行,让用户看不出来卡顿 避免强制同步布局

正常情况,js在对dom进行添加删除的工作时,会开启一个新的任务去执行布局工作

但是如果js中在不断在添加dom后获取新添加的dom的属性,那么就会触发强制同步布局

合理利用css合成动画

css 动画不会被js阻塞,如果能提前知道对某个元素执⾏动画操作,那就最好将其标记为will-change,这是告诉渲染引擎需 要将该元素单独⽣成⼀个图层

避免频繁的垃圾回收

垃圾回收会阻塞

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。