最全的前端性能定位总结
共 13602字,需浏览 28分钟
·
2022-02-13 13:43
前言
为啥第一篇文章就要写前端性能定位相关呢 其实老粉都知道 性能优化文章我早在去年六月就说要完成的 各种事情一耽误 就过了大半年了 也是跨年之前的一位粉丝私信我问性能优化文章啥时候出 这才提醒我 哈哈(感觉自己还欠下了许多文章没更新) 这篇文章我不会介绍前端性能优化的具体方法 因为我觉得写具体如何优化的文章太多了 咱们主要来关注下 如何分析自己的系统前端性能瓶颈在哪里 看看自己的写的代码性能能到多少分 是不是很刺激 不过 文章有点长 前面的理论介绍会有点多 大家可以收藏下方便日后查漏补缺 最后 非常感谢鲨鱼哥之前团队的一位同学(康智)帮忙整理 欢迎大家点击 链接 加入到鲨鱼哥的前端群 内推 讨论技术 摸鱼 求助 皆可
整理不易 如果觉得本文有帮助 记得点赞三连哦 十分感谢!
性能优化的意义
1. 性能是留住用户很重要的一环
pinterest 重建了他们的页面以实现性能,使感知等待时间减少了 40%,从而将搜索引擎流量和注册量提高了 15%。
通过将平均页面加载时间减少 850 毫秒,COOK 发现他们能够将转化率提高 7%,将跳出率降低 7%,并将每个页面的页面数量增加 10%。
BBC 发现,他们在网站加载的每一秒钟内就会损失 10% 的用户。
DoubleClick by Google 发现,如果网页加载时间超过 3 秒,则会有 53% 的用户放弃移动网站的访问。
2. 性能是改善转换率至关重要的一环
对于 Mobify,主页加载速度每减少 100 毫秒,基于会话的转换增加 1.11%,平均年收入增加近 380,000 美元。此外,结账页面加载速度减少 100 毫秒,基于会话的转换增加了 1.55%,从而使年均收入增长近 530,000 美元 DoubleClick 发现在 5 秒内加载网站的发布商的广告收入是在 19 秒内加载的网站的两倍。. 当 AutoAnything 将页面加载时间缩短一半时,他们的销售额增长了 12-13%。
用户角度的性能标准是什么
著名的 2-5-8 原则
当用户能够在 2 秒以内得到响应时,会感觉系统的响应很快;
当用户在 2-5 秒之间得到响应时,会感觉系统的响应速度还可以;
当用户在 5-8 秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;
而当用户在超过 8 秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个 Web 站点,或者发起第二次请求。
综上所述:一个网站的性能好坏是留住用户和实现变现的基础
而我们的目标就是力争 1s,保住 2s
1s 的差距,看似微乎其微,但这 1s,浏览器实际上可以做非常多的事情 接下来让我们来看看如何对一个网站进行性能分析
常见网站性能指标
FP 白屏(First Paint Time ): 从页面开始加载到浏览器中检测到渲染(任何渲染)时被触发(例如背景改变,样式应用等)
白屏时间过长,会让用户认为我们的页面不能用或者可用性差
FCP 首屏(first contentful paint ):从页面开始加载到页面内容的任何部分呈现在屏幕上的时间。 (关注的焦点是内容,这个度量可以知道用户什么时候收到有用的信息(文本,图像等))
FMP 首次有效绘制(First Meaningful Paint ): 表示页面的“主要内容”,开始出现在屏幕上的时间点,这项指标因页面逻辑而异,因此上不存在任何规范。(只是记录了加载体验的最开始。如果页面显示的是启动图片或者 loading 动画,这个时刻对用用户而言没有意义)
LCP(Largest Contentful Paint ):LCP 指标代表的是视窗最大可见图片或者文本块的渲染时间。 (可以帮助我们捕获更多的首次渲染之后的加载性能,但这项指标过于复杂,而且很难解释,也经常出错,没办法确定主要内容什么时候加载完。)
长任务(Long Task):当一个任务执行时间超过 50ms 时消耗到的任务 (50ms 阈值是从 RAIL 模型总结出来的结论,这个是 google 研究用户感知得出的结论,类似用户的感知/耐心的阈值,超过这个阈值的任务,用户会感知到页面的卡顿)
TTI (Time To Internative):从页面开始到它的主要子资源加载到能够快速地响应用户输入的时间。(没有耗时长任务)
首次输入延时 FID (first Input Delay):从用户第一次与页面交互到浏览器实际能够开始处理事件的时间。(点击,输入,按键)
总阻塞时间 TBT(total blocking time ): 衡量从 FCP 到 TTI 之间主线程被阻塞时长的总和。
DCL (DOMContentLoaded):当 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,无需等待样式,图像和子框架的完成加载。
L(onLoaded):当依赖的资源,全部加载完毕之后才会触发
CLS(Cumulative Layout Shift): 是所有布局偏移分数的汇总,凡是在页面完整生命周期内预料之外的布局偏移都包括。布局偏移发生在任意时间,当一个可见元素改变了它的位置,从一个渲染帧到下一个
思考 ==$.ready 和 window.onLoad 有什么区别?==
上面介绍了 11 种性能指标 大家没必要搞懂每一个指标的定义 我们来看看我们需要关注的核心的几个性能指标
Google Web Vitals - 使用者体验量化
web-vitals: Google 于 2020 年 5 年 5 日提出了新的使用者体验量化方式,推出 Web Vitals 是简化这个学习的曲线,大家只要观注 Web Vitals 指标表现即可;
web-vitals 集成了 5 个指标的 api,核心指标有 3 个;
LCP 显示最大内容元素所需时间 (衡量网站初次载入速度) FID 首次输入延迟时间 (衡量网站互动顺畅程度) CLS 累计版面配置移转 (衡量网页元件视觉稳定性)