目的
对比两款功能相似的产品,我们如何才能说一个产品的性能优于另外一个产品呢,无外乎以下几种情况
- 页面打开的速度快,用户可以很快的看到期望的内容
- 页面流转流畅,不会出现卡顿的情况
- 页面不会出现非预期的错误,例如白屏
性能优化也即从技术的角度提升产品的用户体验。
原则
- 建立性能监控机制
- 打点记录pv/uv,首页进入占比
- 错误监控机制,记录JSError、http请求错误
- 记录白屏时间、首屏加载时间、用户可操作时间
- 进行性能分析
- 从性能数据进行分析
- 针对项目类型进行分析
- 从项目代码进行分析
- 采用性能优化手段
- 采用控制变量法评判性能优化的有效性
- 多次实验取平均值,减少误差
- 建立常态化的性能准入机制
方向
- 减少请求次数
- 减小请求体积
- 加快请求速度
- 缩短渲染时间
方法
减少请求次数
静态资源用单独域名,与后端数据请求域名隔离
合并请求,合理利用浏览器同域名并发请求限制
使用 css sprite,减少图片请求次数
避免空 image src
避免 301 重定向
缓存 ajax 数据
减小请求体积
减少HTTP请求内容,例如列表进行分页
外部引用 js & css 等静态资源而不是直接嵌入到 html 中
使用 gzip 压缩
对 JS,CSS 进行压缩混淆
Tree shaking,删除未使用的代码
减少cookie大小
压缩图片,优化图片大小,减少缩放,采用渐进式jpeg
减少组件的复杂度,减小组件体积
减少 favicon.icon 体积
加快请求速度
使用cdn,减少资源物理上与用户的距离
添加 expires/cache-control/etag header 字段,利用浏览器的缓存策略
预加载组件
缩短渲染时间
将 css 放到 html 顶部加载,将 js 放到底部加载
减少 dom 元素个数
减少 dom 操作
减少 iframes
采用事件委托