当前位置: 首页 > news >正文

前端相关性能优化笔记

1.打开速度怎么变快 - 首屏加载优化

2.再次打开速度怎么变快 - 缓存优化了

3.操作怎么才顺滑 - 渲染优化

4.动画怎么保证流畅 - 长任务拆分


2.1 首屏加载指标细化:


1.FP(First Paint 首次绘制)
2.FCP(First contentful Paint 首次内容绘制),FP 到 FCP 中间其实主要是 SPA 应用JS执行,太慢就会白屏时间太长
3.FMP(Frist Meaningful Paint 首次有效绘制),主要内容呈现的时间
4.LCP(Largest Contentful Paint 最大内容渲染),加载最大内容块呈现时间

5.INP(Interaction to Next Paint) 与下一帧绘制的交互
6.TTI 可交互时间,SSR
7.TBT(Total Blocking Time 阻塞时间从 FCP 到 TTI):总阻塞时间

8.CLS(Cumulative Layout Shift 布局偏移):布局偏移情况,重排 reflow

9.TTFB(Time to First Byte):首字节到达时间,请求发出后到接收到数据中间的时间


2.2 方案:

1.优化图片,Webp,图片压缩,图片尺寸(在合适的容器内用合适的尺寸图片 1倍2倍3倍图);

2.字体瘦身,设计型产品,字体子集化(用了哪些字,就最后只生成对应字的字体文件),Fontmin;

3.懒加载资源,图片懒加载、JS 异步加载;

4.css、JavaScript 文件压缩,打包构建阶段完成(terser)

  • 代码压缩
  • 文件合并
  • 文件拆分
  • Tree shaking
  • 动态加载

5. Gzip、Brotli

6.SSR、SSG


3.1 动画卡顿: 

为什么会卡顿?单线程 阻塞 

3.2 方案:  

1.减少主线程阻塞
优化 JavaScript 执行,较少长任务(复杂的计算【web worker、将任务切分(react ScheduLer)】) 

2.GPU

  • css 属性(transform、opacity)
  • 避免会引起重排的属性(定位 left、top)

3.requestAnimationFrame;

4.节流防抖 

 

4.1 应用层状态优化:


1.减少全局状态的依赖

  • 将状态尽可能局部化,避免使用全局状态(Redux或Context)管理所有数据。
  • 如示例:对于仅用于某些组件的状态,可以使用组件的 useState 或useReducer。

2.优化 Context 的性能

  • Context 的更新会重新渲染所有订阅的组件
  • 解决方案:拆分:Context,将不同的逻辑存储在多个 Context 中,降低重新渲染范围。

3.使用高效的状态管理库

  • 使用轻量、高性能的状态管理工具,如Zustand、Jotai 或 Recoil,它们具备更细粒度的状态更新机制。

4.避免不必要的状态更新 

 

 

http://www.lryc.cn/news/581273.html

相关文章:

  • Python数据容器-list和tuple
  • 四、jenkins自动构建和设置邮箱
  • PHP语法基础篇(九):正则表达式
  • CppCon 2018 学习:Smart References
  • 有限状态机(Finite State Machine)
  • 相机位姿估计
  • 2 大模型高效参数微调;prompt tunning
  • 【Linux】自旋锁和读写锁
  • 全素山药开发指南:从防痒处理到高可用食谱架构
  • DeepSeek扫雷游戏网页版HTML5(附源码)
  • C#指针:解锁内存操作的底层密码
  • 机械时代的计算
  • 【Linux】常用基本指令
  • 爬虫工程师Chrome开发者工具简单介绍
  • 推荐算法系统系列五>推荐算法CF协同过滤用户行为挖掘(itembase+userbase)
  • Python实例题:基于 Python 的简单电子词典
  • 洛谷刷题9
  • Django中关于templates目录和static目录存放位置的总结
  • Django跨域
  • python使用fastmcp包编写mcp服务端(mcp_server)和mcp客户端(mcp_client)
  • jxWebUI--用数据表输入输出数据
  • 前端进阶之路-从传统前端到VUE-JS(第三期-VUE-JS配套UI组件的选择)(Element Plus的构建)
  • SQL 表结构转 Go、Java、TS 自定义实体类,支持自编模板
  • 学习日志04 python
  • 解决kali Linux在VMware中的全局缩放问题
  • Linux:多线程---深入互斥浅谈同步
  • jvm架构原理剖析篇
  • Python之--基本知识
  • App爬虫实战篇-以华为真机手机爬取集换社的app为例
  • 11_架构演进:从单体到云原生的蜕变