Skip to content

前端性能优化

时间和空间

性能分析指标

加载耗时、渲染耗时、网络耗时、脚本执行耗时 & CPU 占用、资源占用、本地缓存占用

时间角度

减少耗时

网络请求优化

  • 减少 DNS 查询时间,使用浏览器 DNS 缓存、计算机 DNS 缓存、服务器 DNS 缓存
  • 合理地使用 CDN,有效的减少网络请求耗时
  • 对请求资源进行缓存(浏览器缓存、HTTP 缓存、后台缓存)Service Worker、PWA 技术
  • Tree-shaking 代码分割
  • 对请求资源进行合理的拆分,减少请求资源的体积
  • 对资源进行压缩,减少传输数据大小
  • 使用 HTTP2、HTTP3 提升资源请求速度
  • 对请求进行优化(多个请求合并,减少通信次数;请求进行域名拆分,提升并发请求数量)

首屏加载优化

将页面尽快展示给用户看,减少白屏时间

  • 对页面进行分片/分屏加载,将页面可见/可交互时间提前
  • 优化资源加载的顺序和粒度,仅加载需要的资源,采用异步加载的方式加载其他资源
  • 按需加载(差异化服务,读写分离)
  • 使用服务端渲染,减少页面二次请求和渲染的耗时
  • 使用秒看技术,通过预览的方式提前给用户观看(图片)
  • 配合客户端进行资源预请求和预加载(预热 Web 容器)
  • 配合客户端将资源和数据进行离线,可用于下一次的页面快速渲染

渲染过程优化

  • 使用资源预加载,空闲时间将用户可能需要用到的资源进行获取并加载
  • 减少 DOM 数量、减少/合并 DOM 操作,减少浏览器渲染过程中的计算耗时
  • 通过合理使用浏览器 GPU 进程合成,提升浏览器渲染效率
  • 使用离屏渲染,在页面不可见的地方进行提前渲染(Canvas 渲染)
  • 通过将浏览帧率保持在 60FPS,提升页面交互和渲染的流畅度

计算/逻辑提速

  • 将 JavaScript 大任务拆解 + 并行计算的方式,有效的降低整体计算耗时(Web Worker)
  • 使用更高运行效率的方式,减少计算耗时(Webassembly)
  • 将计算过程提前,减少计算等待时长(AOT 技术)
  • 使用更优的算法或数据结构,提升计算效率(红黑树)
  • 将结果缓存,减少运行次数

空间角度

降低资源占用

  • 合理使用缓存,不滥用用户的缓存资源(浏览器缓存,IndexDB)及时进行缓存清理
  • 通过使用数据结构享元的方式,减少对象的创建,从而减少内存占用
  • 避免存在内存泄漏(避免全局变量的使用,及时解除引用)
  • 避免复杂/异常的递归调用,防止栈溢出

性能数据

  • 网络资源请求时间。
  • Time To Start Render(TTSR):浏览器开始渲染的时间。
  • Dom Ready:页面解析完成的时间。
  • Time To Interact(TTI)):页面可交互时间。
  • Total Blocking Time (TBT):总阻塞时间,代表页面处于不可交互状态的耗时。
  • First Input Delay(FID):从用户首次交互,到浏览器响应的时间。

Released under the MIT License.