继上一篇《灵活运用JS开发技巧》获得好评后,发现总结性的小干货能够为你们提高更好的开发技巧和编码思惟,对代码量产化提供更扎实的质量和支持。此次咱们来聊聊你们可能都比较关心的话题:性能优化。css
一说到页面的性能优化,你们可能都会想起雅虎军规
、2-5-8原则
、3秒钟首屏指标
等规则,这些规则在开发过程当中不是强制要求的,可是有时候为了追求页面性能的完美和体验,就不得不对原有的代码进行修改和优化。html
下面就结合本身三年多的开发经验和大量的项目实践,整理出一些经常使用的性能优化要点,同时再罗列一下雅虎军规
、2-5-8原则
、3秒钟首屏指标
这三个经常使用规则的要点。前端
为了方便记忆和阅读,文章使用部分简写名词,解释以下git
Desktop End Page
Mobile End Page
首屏指标
Loading
进行占位338kb/s(2.71mb/s)
,首屏资源不该超过1014kb
加载优化github
Android
支持4个,iOS5+
支持6个)
GZip
link
方式引入,脚本放在尾部并使用异步方式加载Loading
,资源加载完成后再显示页面,但加载时间过长,会形成用户流失
Loading
srcset
来按需显示(过分压缩图像大小影响图像显示效果)
Cookie
会影响加载速度,静态资源域名不使用Cookie
加载过程是最为耗时的过程,可能会占到总耗时的`80%时间(**优化重点**) web
执行优化正则表达式
src
会从新加载当前页面,影响速度和效率DataURL
图像没有使用图像的压缩算法,文件会变大,而且要解码后再渲染,加载慢耗时长执行处理不当会阻塞页面加载和渲染 算法
渲染优化canvas
设置viewport:HTML的viewport
可加速页面的渲染segmentfault
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1">
复制代码
减小DOM节点:DOM节点太多影响页面的渲染,尽可能减小DOM节点
优化动画
CSS动画
,5个元素以上使用Canvas动画
,iOS8+
可以使用WebGL动画
优化高频事件:scroll
、touchmove
等事件可致使屡次渲染
GPU加速:使用某些HTML5标签和CSS3属性会触发GPU渲染
,请合理使用(过渡使用会引起手机耗电量增长)
video
、canvas
、webgl
opacity
、transform
、transition
样式优化
display
会影响页面的渲染
display:inline
后不该该再使用float
、margin
、padding
、width
和height
display:inline-block
后不该该再使用float
display:block
后不该该再使用vertical-align
display:table-*
后不该该再使用float
和margin
float
在渲染时计算量比较大,尽可能减小使用font-size
影响CSS树的效率0
时不要带单位Opera
改用blink
内核,-o-
已淘汰脚本优化
.length
计算用一个变量保存值id
选择器选择元素是最快的tap
(touchstart
和touchend
)代替click
(注意touch
响应过快,易引起误操做)雅虎军规
雅虎团队经过大量实践总结出如下7类35条
前端优化规则,规则详情请参考这位兄弟的《雅虎前端优化35条规则翻译》。
HTTP
请求数DNS
查询AJAX请求
DOM
元素数量iframe
数量404
错误CSS
表达式<link>
代替@import
JS
和CSS
JS
和CSS
DOM
操做CSS精灵图
HTML
中缩放图片favicon
Cookie
大小Cookie
域名的资源25kb
CDN
Expires
或Cache-Control
Gzip
资源ETags
AJAX请求
时使用get
2-5-8原则
在前端开发中,此规则做为一种开发指导思路,针对浏览器页面的性能优化。
2秒内
获得响应,会感受页面的响应速度很快 Fast2~5秒间
获得响应,会感受页面的响应速度还行 Medium5~8秒间
获得响应,会感受页面的响应速度很慢,但还能够接受 Slow8秒后
仍然没法获得响应,会感受页面的响应速度垃圾死了(此时会有如下四种可能)
刷新页面
离开页面,有可能转投竞争对手的网站
咒骂开发此页面的程序猿
网线断了?Wi-Fi断了?信号很差?话费用完了?
知道这个规则的数字顺序怎样来的吗,看下键盘右方的数字键盘由下往上排序:2-5-8
3秒钟首屏指标
此规则适用于M端,顾名思义就是打开页面后3秒钟内完成渲染并展现内容。
写到最后总结得差很少了,后续若是我想起还有哪些前端性能优化遗漏的,会继续在这篇文章上补全,同时也但愿各位朋友对文章里的要点进行补充或者提出本身的看法。欢迎在下方进行评论或补充喔,喜欢的点个赞或收个藏,保证你在开发时用得上。
原文:请戳这里
做者:JowayYoung
仓库:Github
博客:掘金、思否、知乎
公众号:Uzero
联系我:关注公众号后有个人微信哟
《灵活运用》系列
《依赖汇总》系列
《必备工具》系列
《随笔》系列
关注公众号Uzero
,更多前端小干货等着你喔!我是JowayYoung
,喜欢分享前端技术和生活纪事,学习与生活不落下,天天进步一点点,与你们相伴成长