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

前端性能优化

一、性能指标和测量工具

1.核心 Web 指标

(1)LCP:最大内容绘制,测量加载性能。

(2)FID:首次输入延迟,测量交互性能。

(3)CLS:累计布局偏移,测量视觉稳定性。

2.常用工具

(1)chrome DevTools Performance 面板:用于分析运行时性能,查看帧率(FPS)、CPU 使用情况和渲染过程。

(2)Lighthouse:Google 的一个开源自动化工具,可以对网页进行性能、无障碍、最佳实践和 SEO 评估。

(3)PageSpeed Insights:一个在线工具,可以根据 Lighthouse 的数据,给出你的网站在移动端和桌面端的性能分数及优化建议。

二、资源优化(图像、字体等)

1.资源文件是导致网站加载缓慢的主要原因之一。

2.图像优化

(1)选择合适的格式:对于照片,使用 JPEG;对于图标和透明图像,使用 PNG 和 SVG。

(2)压缩图像:使用 WebP 或 AVIF 等现代格式,它们在提供更高质量的同时,文件大小更小。

(3)响应式图片:使用 <picture> 标签或  srcset 属性,根据用户设备和视口大小提供不同尺寸的图片。

(4)懒加载:对于不在首屏的图片,使用  loading="lazy" 属性,让浏览器只在需要时才加载它们。

3.字体优化

(1)自定义字体:只加载你需要的字体格式,如 WOFF2。

(2)减小文件大小:使用工具对字体文件进行子集化,移除不用的字形。

(3)预加载:使用 <link rel="preload"> 标签,提前加载关键字体,避免页面闪烁。

三、代码优化

1.JavaScript优化

(1)压缩和混淆:使用打包工具(如 Webpack、Vite) 压缩代码,减小文件体积。

(2)按需加载:将代码分割成多个小块,只在需要时才加载。

(3)移除不必要的代码:使用 Tree Shaking 移除未被使用的代码。

2.CSS 优化

(1)压缩:移除多余的空格、注释等。

(2)减少嵌套:避免过深的 CSS 嵌套,这会增加浏览器的计算开销

三、渲染性能优化

1.渲染性能优化

(1)减少重排和重绘

  • 重排:当元素的尺寸、位置发生变化时,浏览器需要重新计算并布局页面。
  • 重绘:当元素的颜色、背景等不影响布局的属性发生变化时,浏览器需要重新绘制。
  • 避免方法:尽量使用 CSS trasnform和 opacity 来代替修改 top 、left 或 width、height 等属性,因为它们不会触发重排。

(2)善用事件节流和防抖

  • 对于高频事件(如 scroll、resize),使用节流限制函数执行的频率。
  • 对于需要等待用户输入停止后再执行的事件(如搜索框),使用防抖延迟函数执行。

2.网络性能优化

(1)CDN(内容分发网络):使用 CDN 可以将静态资源缓存到全球各地的服务器上,用户可以从离他们最近的节点获取资源,从而加快加载速度。

(2)浏览器缓存:合理设置 HTTP 缓存头(如 Cache-Control),让浏览器缓存静态资源,下次访问时无需再次下载。

(3)HTTP/2:HTTP/2 协议支持多路复用,允许在一个连接上同时发送多个请求,减少了网络延迟。

3.实践项目:优化现有项目

(1)使用 Lighthouse 评估:在 ChromeDevTools 中运行 Lighthouse,获取项目性能分数。

(2)实施一个优化点

  • 图像优化:找到项目中的一个图片,使用在线工具(如 TinyPNG)进行压缩。
  • 懒加载:为不在首屏的图片添加 loading="lazy" 属性。
  • 代码优化:如果项目中有很多 JS 库,可以尝试使用按需加载或 Tree Shaking。

(3)重新评估:再次运行 Lighthouse,观察性能分数是否有提升。

http://www.dtcms.com/a/333577.html

相关文章:

  • JCTools 无锁并发计数器:ConcurrentAutoTable
  • obsidian ai/copilot 插件配置
  • epoll边缘模式收数据学习
  • 【100页PPT】数字化转型某著名企业集团信息化顶层规划方案(附下载方式)
  • 基于之前的Python附魔插件做出的一些改进
  • 3s岗位合集
  • 并行Builder-输出型流程编排的新思路
  • AI提高投放效率的核心策略
  • 【生产实践】内网YUM源中rpm包的替换与仓库升级实战
  • 应用侧华为云LoTDA设备接入平台
  • 2025二建成绩公布!各地合格标准汇总!
  • 通俗易懂:Vue3的ref()运行机理
  • Windows Server存储智能数据校验
  • AMQP协议介绍
  • 【进阶】Java技术栈八股文学习资料整理
  • 优化网络ROI:专线复用,上云出网一“线”牵!
  • 力扣top100(day04-04)--栈
  • 从“写代码”到“定义需求”:AI编程工具如何重构软件开发的核心流程?
  • 深度学习-卷积神经网络-ResNet 残差网络
  • 永磁同步电机控制 第二篇、电机的分类
  • 支持向量机的原理和案例解析
  • Sklearn 机器学习 手写数字识别 使用K近邻算法做分类
  • Android Studio
  • IO流-转换流
  • MySQL的分析查询语句(EXPLAIN):
  • stream流debug
  • 华硕主板怎样调整风扇转速
  • Redis高级优化实战:从键值设计到集群调优
  • [HDCTF 2023]Normal_Rsa(revenge)
  • 晶振电路的负载电容、电阻参数设计