web应用性能优化

68 阅读1分钟

优化关键指标

  1. FP首屏绘制:页面开始展示的时间点-开始请求的时间点
  2. FCP:首屏内容绘制
  3. TTI可交互时间:domContentLoadedEventEnd - navigationStart
  4. 最大内容绘制LCP:可用通过PerformanceObserver来捕获
  5. 首次有效绘制FMP:捕获首次渲染的加载性能

大方向分为工程化和细节处理

工程化

  1. Webpack本身提供的优化,Base64,资源压缩,Tree shaking,拆包chunk
  2. 客户端Gzip离线包,服务器资源Gzip压缩
  3. 服务端渲染,客户端预渲染
  4. CDN静态资源
  5. JS瘦身,ES Module,动态Import,动态Polyfill
  6. 浏览器合理设置缓存策略
  7. 减少重定向
  8. 骨架图
  9. 数据预取,包括接口数据,和加载详情页图片

细节方向(代码层面)

  • 使用 prefetch / preload 预加载等新特性
  • 图片,图片占位,图片懒加载。 雪碧图
  • async(加载完当前js立即执行)/defer(所有资源加载完之后执行js)
  • 减少Dom的操作,减少重排重绘
  • 从客户端层面,首屏减少和客户端交互,合并接口请求
  • 数据缓存
  • 首页不加载不可视组件
  • 减少组件层级
  • 优先使用Flex布局,css动画

常见卡顿解决方案

  • CSS动画效率比JS高,css可以用GPU加速,3d加速。如果非要用JS动画,可以用requestAnimationFrame
  • 批量进行DOM操作,固定图片容器大小,避免屏幕抖动
  • 减少重绘重排
  • 节流和防抖
  • 减少临时大对象产生,利用对象缓存,主要是减少内存碎片
  • 异步操作,IntersectionObserver,PostMessage,RequestIdleCallback

常用分析工具(Chrome devtools)

  • performance.timing
  • lighthouse
  • components(react)