性能优化的目的

提高用户体验,保证用户留存

I/O 优化

前端常见 I/O 是网络 I/O

HTTP 协议升级

[[016.HTTP 各版本差异|HTTP 各版本差异]]

合理利用缓存

只请求当前需要的资源

缩减资源体积和请求数量

时序优化:资源加载顺序

符合人体工学的设计

添加 loading、骨架屏设计,而不是白屏,降低用户焦虑度

CPU 优化

JS 长任务阻塞页面渲染

JS 执行和页面渲染都在渲染主线程一个线程中执行,JS 占用太长时间超出一帧的时间(16.667 ms),用户就会感知卡顿

解决方法:将长任务打断成多个短任务

// 下一个宏任务再继续运行
function sleep(time) {
  return new Promise(resolve => setTimeout(resolve, time))
}

多线程

使用 [[007.Web Worker|Web Worker]] 创建多线程运行

JS 动画使用 requestAnimationFrame

requestAnimationFrame 每帧调用,保证动画流畅性

任务优先级

符合人体工学,区分任务优先级,优先执行用户关心度和感知度高的任务

开发体验/工具链优化

dev server

其他