通俗讲解前端性能优化+项目实战(一)

linbojue
• 阅读 3

一、前端性能优化基础概念 前端性能优化是指通过技术手段和策略提升网页加载速度、响应效率及用户体验的过程。其核心目标包括减少资源消耗、加快页面加载速度、提升交互流畅性

  1. 性能优化核心维度
  2. FCP(First Contentful Paint,首次内容渲染时间)

定义:页面首次渲染文本、图片等任何内容的时间点,反映初步加载速度。

优化目标:缩短用户感知的“白屏时间”,提升首屏体验。

优化策略:

内联关键CSS,避免阻塞渲染。 异步加载非关键JavaScript(如使用async/defer属性)。 合并与压缩CSS/JavaScript文件。 使用SSR(服务器端渲染)或预渲染技术生成静态HTML。

  1. Largest Contentful Paint (LCP)

定义:记录页面中最大文本块或图像元素首次渲染的时间,反映视觉加载速度。

优化策略:

使用现代图像格式(WebP/AVIF)并压缩图片。 优先加载首屏关键资源(如主图、标题)。 使用CDN加速静态文件传输。 避免阻塞渲染的第三方脚本(如广告、统计代码)。 延迟非关键资源加载(如异步加载JavaScript)。

  1. First Input Delay (FID)

含义:用户首次与页面交互(如点击按钮)到浏览器实际响应的时间间隔。

优化方向:

减少主线程任务(如拆分长任务、使用Web Worker)。 延迟非关键JS执行(如defer/async)。

  1. Cumulative Layout Shift (CLS)

含义:页面加载过程中布局偏移的总分数(由意外元素移动导致,如未设置尺寸的图片、动态插入的广告)。

计算方式:影响分数 × 距离分数(单个元素的偏移量 × 面积占比)。

优化方向:

内联css或及时加载关键css文件 为图片明确的width和height。 避免动态插入内容覆盖已有元素(如使用position: absolute需谨慎)。

  1. TBT(Total Blocking Time,总阻塞时间)

定义:衡量主线程被长任务阻塞的总时间,反映页面交互响应能力。

原因:浏览器的渲染程序进程会将您的代码转换为用户可以与之互动的网页。默认情况下,渲染程序进程的主线程通常会处理大多数代码:它会解析 HTML 并构建 DOM,解析 CSS 并应用指定的样式,然后解析、评估和执行 JavaScript。主线程也会处理用户事件。 因此,每当主线程忙于执行其他操作时,您的网页可能不会响应用户互动,从而导致糟糕的体验

优化策略:

将长任务拆分为小任务(如使用setTimeout或requestIdleCallback)。

使用Web Workers处理计算密集型任务。

减少DOM操作频率,使用DocumentFragment或虚拟DOM。

避免同步执行耗时操作(如同步XMLHttpRequest)。

二、前端性能监测工具

  1. Lighthouse

核心功能:由Google开发的开源工具,集成在Chrome开发者工具中,可生成包含性能、可访问性、SEO等维度的综合报告。

对FCP/LCP的优化:

提供具体优化建议,如压缩图片、减少阻塞渲染的CSS/JS、启用CDN、设置缓存等。

Lighthouse 报告的“优化建议”部分会列出阻止系统对您网页进行首次绘制的所有网址。目标是通过内嵌关键资源、推迟非关键资源以及移除所有未使用的资源,减少这些呈现阻塞型网址的影响。 2.WebPageTest

核心功能:支持模拟不同地理位置、浏览器和网络条件(如3G/4G)下的页面加载性能。

对FCP/LCP的优化:

通过瀑布图(Waterfall Chart)可视化资源加载顺序,识别阻塞FCP的CSS/JS或延迟LCP的大图。 提供Filmstrip视图,逐帧展示页面渲染过程,直观分析FCP和LCP的时间节点。

3.PageSpeed Insights

核心功能:Google提供的在线工具,结合实验室数据(Lab Data)和用户数据(Field Data)评估性能。

对FCP/LCP的优化:

显示FCP和LCP的数据(如75%用户加载时间),帮助评估优化效果。 提供机会(Opportunities)和诊断(Diagnostics)板块,例如建议使用WebP格式压缩图片以提升LCP。

关键渲染路径是指网页开始在浏览器中渲染之前所涉及的步骤。为了渲染网页,浏览器需要 HTML 文档本身以及渲染该文档所需的所有关键资源。 渐进式渲染 Web 本身就是分布式的。与在使用前安装的原生应用不同,浏览器无法依赖于网站是否具有呈现网页所需的所有资源。因此,浏览器非常擅长以渐进的方式呈现网页。原生应用通常有安装阶段和运行阶段。不过,对于网页和 Web 应用,这两个阶段之间的界限要模糊得多,浏览器的设计就是充分考虑了这一点。 浏览器一旦有资源来呈现网页,通常就会开始呈现。因此,选择的关键在于何时呈现:何时太早? 如果浏览器在仅包含一些 HTML 时就尽快呈现(但在没有任何 CSS 或必要的 JavaScript 之前),则网页会暂时看起来损坏,并且在最终呈现时会发生很大变化。与在初始呈现空白屏幕一段时间(直到浏览器拥有初始呈现所需的更多资源,从而提供更好的用户体验)相比,这种体验更差。 另一方面,如果浏览器等待所有资源可用,而不是执行任何顺序渲染,则用户将需要等待很长时间;如果网页在更早的时间点就已可用,则这种等待通常是没有必要的。 浏览器需要知道它应等待的资源数量下限,以避免呈现明显不佳的体验。另一方面,浏览器也不应等待过长时间才向用户显示内容。浏览器在执行初始渲染之前执行的一系列步骤称为关键渲染路径。 了解关键渲染路径有助于提高 Web 性能,因为这样可以确保您不会过度阻塞初始网页渲染。不过,同时请务必不要通过从关键渲染路径中移除初始渲染所需的资源,而导致渲染过早发生。 关键渲染路径 渲染路径包括以下步骤:

从 HTML 构建文档对象模型 (DOM)。 从 CSS 构建 CSS 对象模型 (CSSOM)。 应用会更改 DOM 或 CSSOM 的任何 JavaScript。 从 DOM 和 CSSOM 构建渲染树。 在页面上执行样式和布局操作,以查看哪些元素适合放置在哪里。 绘制内存中元素的像素。 如果像素有重叠,则合成像素。 将所有生成的像素实际绘制到屏幕上。

布局是查找元素几何图形的过程。主线程会遍历 DOM 和计算样式,并创建包含 x、y 坐标和边界框大小等信息的布局树。布局树的结构可能与 DOM 树类似,但它仅包含与网页上显示的内容相关的信息。如果应用了 display: none,则该元素不属于布局树(不过,具有 visibility: hidden 的元素属于布局树)。同样,如果应用了包含 p::before{content:"Hi!"} 等内容的伪元素,即使该元素不在 DOM 中,也会包含在布局树中

https://infogram.com/9862pdf-1hmr6g8jzx5xo2n https://infogram.com/9862pdf-1h0n25oplq71l4p https://infogram.com/9862pdf-1hnp27eqyd83y4g https://infogram.com/9862pdf-1h1749wqmz5nl2z https://infogram.com/9862pdf-1h9j6q75k91854g https://infogram.com/9862pdf-1h0r6rzw5ynyl4e https://infogram.com/9862pdf-1h9j6q75k911v4g https://infogram.com/9862pdf-1hnq41opz87kp23 https://infogram.com/9862pdf-1hmr6g8jzxpoz2n https://infogram.com/9862pdf-1hxj48mqegxzq2v

点赞
收藏
评论区
推荐文章
Dax Dax
4年前
前端性能优化
前端性能优化1、减少资源的请求次数和大小压缩合并js和css文件,减少http请求次数和请求资源的大小;在项目中使用webpackglup等打包编译工具2、尽量使用字体图标或者svg图标代替传统的png(jpg)图渲染更快,减少代码体积,且放大不会出现变形等3、使用图片懒加载目的是减少页面第一次加载的http请求次数,实现思路:
爱丽丝13 爱丽丝13
4年前
聊聊前端性能优化
为什么要做性能优化?性能优化有多重要?网站的性能对于用户的留存率、转化率有很大的影响,直白的说,提高网站的性能可以直接提高网站带来的收益。性能优化的分类前端的性能优化主要分为两类:1.加载时优化;2.运行时优化;例如压缩文件、使用CDN加载静态资源属于加载时优化;及时的解绑事件、减少DOM的操作属于运行时优化。吉
巴拉米 巴拉米
4年前
前端性能优化
为什么要做性能优化?性能优化有多重要?网站的性能对于用户的留存率、转化率有很大的影响,直白的说,提高网站的性能可以直接提高网站带来的收益。性能优化的分类前端的性能优化主要分为两类:1.加载时优化;2.运行时优化;例如压缩文件、使用CDN加载静态资源属于加载时优化;及时的解绑事件、减少DOM的操作属于运行时优化。吉
Python进阶者 Python进阶者
3年前
HTML页面基本结构和加载过程
大家好,我是皮皮。前言对于前端来说,HTML都是最基础的内容。今天,我们来了解一下HTML和网页有什么关系,以及与DOM有什么不同。通过本讲内容,你将掌握浏览器是怎么处理HTML内容的,以及在这个过程中我们可以进行怎样的处理来提升网页的性能,从而提升用户的体验。一、浏览器页面加载过程不知你是否有过这样的体验:当打开某个浏览器的时候,发现一直
实战剖析-vue项目首屏加载时长优化
现状分析:首屏速度是用户体验的最关键一环,而首屏速度最大的决定性因素就是资源的加载速度,资源加载速度等于资源大小网速,老的前端项目随着不断增长,代码可能会变得混乱,冗余难以理解,不断的做加法,久而久之,前端性能上就会受到影响,相信大家在工作当中一定遇到,
陈杨 陈杨
7个月前
HarmonyOS5云服务技术分享--应用预加载提速指南
手把手教你用预加载优化应用启动速度Hi,开发者朋友们!今天我们来聊聊如何通过预加载技术让应用启动快人一步。在用户体验至上的时代,首屏加载速度直接关系到用户留存率,快来掌握这个提升性能的利器吧!一、为什么要用预加载?想象一下:用户安装应用后首次打开,首页数据
WAAP对提升网站访问速度有什么作用?
本文分享自天翼云开发者社区《》,作者:amberWAAP(WebApplicationandAPIProtection)对提升网站访问速度具有显著作用,主要体现在以下几个方面:1.网络性能优化:WAAP通过优化网络性能来提升用户体验。网络攻击可能导致网站和
聊聊前端性能指标那些事儿
作为C端前端研发,除了攻克业务难点以外,也要有更深层的自我目标,那就是性能优化。这事儿说大不大,说小也不小,但难度绝对不一般,所涉及的范围优化点深入工程每个细胞。做好前端性能优化绝非简单之事!文章主要内容介绍前端性能考核指标及优化方案。
实践指南-前端性能提升 270% | 京东云技术团队
本文详细介绍了一个前端项目优化的详细过程,从优化前的问题分析,到具体的优化措施,最终实现了前端性能提升了近3倍。同时也将性能指标落到监控平台,实现可视化的监控前端性能指标。
23年通天塔搭建页前端性能优化阶段分享
前言通天塔搭建页项目是用来搭建各类活动页面,比较老且业务复杂的项目,可优化点还是非常多的。今年侧重对运营页首屏加载的性能优化,在保证系统稳定可控、需求持续迭代前提下,最终提升了58.8%速度。在此非常感谢通天塔产品组、后端组、前端组同学,对项目性能优化大力