
一说到页面的性能优化,大家可能都会想起雅虎军规、2-5-8原则、3秒钟首屏指标等规则,这些规则在开发过程中不是强制要求的,但是有时候为了追求页面性能的完美和体验,就不得不对原有的代码进行修改和优化。
下面整理出一些常用的性能优化要点,同时再罗列一下雅虎军规、2-5-8原则、3秒钟首屏指标这三个常用规则的要点。
❝ 为了方便记忆和阅读,文章使用部分简写名词,解释如下 ❞
Desktop End Page
Mobile End Page
首屏指标
Loading进行占位
338kb/s(2.71mb/s),首屏资源不应超过1014kb
❝ 「加载优化」 ❞
Android支持4个,iOS5+支持6个」)
GZip
link方式引入,脚本放在尾部并使用异步方式加载
Loading,资源加载完成后再显示页面,但加载时间过长,会造成用户流失
Loading
srcset来按需显示(「过度压缩图像大小影响图像显示效果」)
webp优于jpg,png8优于gif
1014kb、不宽于640px
Cookie会影响加载速度,静态资源域名不使用Cookie
加载过程是最为耗时的过程,可能会占到总耗时的`80%时间(**优化重点**)❝ 「执行优化」 ❞
src会重新加载当前页面,影响速度和效率
DataURL图像没有使用图像的压缩算法,文件会变大,并且要解码后再渲染,加载慢耗时长
执行处理不当会阻塞页面加载和渲染❝ 「渲染优化」 ❞
❝ 「样式优化」 ❞
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