前端性能优化&测试
description
Transcript of 前端性能优化&测试
性能指标• TTFB (Time to First Byte)• TTSR (Time to Start Render)
– TTFB– TTDD (Time To Document Download)– TTHE (Time To Head End)
• TTDC (Time to Document Complete)– TTSR– TTDC (Time to Dom Created)– TTST (Time to Script)
• TTFL (Time to Fully Loaded)• TTI (Time to Interact)
优化 Tips
• Yahoo 34 条军规http://wiki.ued.taobao.net/doku.php?id=ued.bj:f2e:34rule
• 图片优化– 无损压缩– 格式选择 http://ued.taobao.com/blog/2010/12/10/jpg_png/
• Js&css 顺序
– 资源是否下载依赖 JS 执行结果
– JS 执行依赖 Css 最新渲染
– 现代浏览器存在 prefetch 优化
http://hikejun.com/blog/2012/02/02/js%E5%92%8Ccss%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%85%B3%E7%B3%BB/
• reflow & repaint
- reflow 对于 DOM 结构中的各个元素都有自己的盒子 ( 模型 ), 这些都需要浏
览器根据各种样式 ( 浏览器的 , 开发人员定义的等 ) 来计算并根据计算结果将元素放到它该出现的位置 , 这个过程称之为 reflow;
- repaint 当各种盒子的位置 , 大小以及其他属性 , 例如颜色 , 字体大小等都确
定下来后 , 浏览器于是便把这些元素都按照各自的特性绘制了一遍 , 于是页面的内容出现了 , 这个过程称之为 repaint.
- 避免 reflow 和 repaint 方法
- 尽可能限制 reflow 的影响范围
- 集中改变样式
- 实现元素动画,尽量使之脱离文档流,不影响其他元素
- 避免频繁操作 DOM
- Dom 操作时可以先移除或隐藏,操作完再插入、显示。- 创建多个 DOM 节点,一次性插入
• Javascript 性能优化
– 使用局部变量
– 缓存频繁使用的对象、数组及相关属性值
– 使脚本尽可能少的运行。- 短路表达式应用 , a && b||c- 基于事件处理相应的处理方法- 惰性函数
- 流程控制- if语句中,经常会发生的放在靠上位置。
- If 条件为连续的区间可以使用二分法拆分
- 离散的判断,可以使用 switch
- UI线程- Js 和 UI更新共享进程
- 100 ms 原则
- 使用定时器让出控制权
• 内部平台
– 阿里度 http://alibench.taobao.com/index.php
– POC系统 ( comming soon…)
– TaoBao ShowSlow http://showslow.taobao.net/
– 鱼眼系统 http://wpo.taobao.net/
– 页面显微镜 http://analytics.corp.taobao.com
– 淘数据 http://dw.taobao.ali.com/index.htm
– 数据门户 http://sg.admin.taobao.org/report/index.htm
• 外部平台
– webpagetest http://webpagetest.org/
– httparchive http://www.httparchive.org/index.php