移动端H5前端性能优化指南
Mobile我们提出3秒渲染完成首屏指标,首屏加载3秒完成或者使用Loading。基于联通3G网络平均338KB/S(2.71Mb/s),所以首屏支援不应超过1014KB
1、加载优化
- 合并CSS,JavaScript
- 合并小图片,使用雪碧图
- 缓存一切可缓存的资源
- 使用长Cache
- 使用外联式引用CSS、JAVASCRIPT
- 压缩HTML、CSS、JAVASCRIPT
- 启用GZip
- 使用首屏加载
- 使用按需加载
- 使用滚屏加载
- 预加载
- 可感知Loading
- 提前加载下一页
- 对用户行为分析,可以在当前页加载下一页资源,提升速度
- 通过Media Query加载
- 增加Loading进度条
- 减少Cookie
- 避免重定向
- 异步加载第三方资源
- 减少HTTP请求
2、CSS优化
- CSS写在头部、JAVASCRIPT写在尾部或者异步
- 避免图片和iFrame等的空Src
- 尽量避免重设图片大小
- 图片尽量避免使用DataURL
- 尽量避免在HTML标签中写Style属性
- 避免CSS表达式
- 移除空的CSS规则
- 正确使用Display的属性
- 不滥用Float
- 不滥用Web字体
- 不声明过多的Font-size
- 值为0时不需要任何单位
- 标准化各种浏览器前缀
- 无前缀应放在最后。
- CSS动画只用(-webkit- 无前缀)两种即可
- 其它前缀为“-webkit- -moz- -ms-无前缀”四种(-o-Opera浏览器改用blink内核,所以淘汰)
- 避免让选择符看起来像正则表达式
3、图片优化
- 使用智图
- 使用(css3、SVG、IconFont)代替图片
- 使用Srcset
- webP优于JPG
- PNG8优于GIF
- 首次加载不大于1014KB(基于3秒联通平均网速所能达到值)
- 图片不宽于640
4、脚本优化
- 减少重绘和回流
- 缓存DOM选择与计算
- 缓存列表length
- 尽量使用时间代理,避免批量绑定事件
- 尽量使用ID选择器
- 使用touchStart、touchend代替click
5、渲染优化
- HTML使用Viewport
- 减少Dom节点
- 尽量使用CSS3动画
- 合理使requestAnimationFrame动画代替setTimeout
- 适当使用Canvas动画
- Touchmove、Scroll时间会导致多次渲染
- 使用{ CSS3 transitions、CSS 3D transforms、Opacity、Canvas、WebGL、Video } 来触发GPU渲染