2024 年 Web 核心性能指标CLS解读,互联网大厂面试难度排名

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

累计布局位移(CLS)是衡量用户视觉稳定性的一项重要的以用户为中心的度量标准,因为它有助于量化用户打开页面时,页面布局变化的频率。目前官方建议这个指标应该小于 0.1,这样的 CLS 有助于确保页面的用户体验。

试想一下这样的场景,你想要点击一个链接或一个按钮,但是在手指落下的瞬间(BOOM),链接移动了,您最终点击了其他东西!这样的体验是不是糟糕透了?比如如下例子:

页面布局的变动通常是由于异步加载的资源或将DOM元素动态添加到现有内容上方的页面而发生的。罪魁祸首可能是尺寸未知的图像或视频,或者是动态调整自身大小的第三方广告或小部件等。

解决这个问题的难点在于,网站在开发中的功能通常与用户的体验有很大不同。个性化或第三方内容在开发环境中和在生产中的表现不尽相同,开发时的图片等资源通常已经存在于开发者的浏览器缓存中,并且在本地的API调用通常很快,所以延迟不明显。

而,累计布局位移(CLS)度量标准可通过测量实际用户发生变化的频率来帮助你发现这类问题。

什么是CLS?

CLS是测量在页面整个生命周期中发生的每个元素布局变化的分数总和。

布局移动由Layout Instability API定义,该API定义在视口中可见的元素在两渲染帧之间更改其开始位置时,这些元素被认为是不稳定元素。

请注意,仅当现有元素更改其起始位置时,才会发生布局移动。如果将新元素添加到DOM或现有元素更改了大小,则只要更改不会导致其他可见元素更改其开始位置,该元素就不会算作布局偏移。

良好的CLS分数是多少?

为了提供良好的用户体验,网站应努力使CLS得分不超过0.1。为确保大多数用户达到这一目标,可以用移动设备和台式机设备有75%的页面得分符合要求即为合格作为基本标准。

要了解有关此建议背后的研究和方法的更多信息,请参阅:定义核心Web Vitals(https://web.dev/defining-core-web-vitals-thresholds/)指标阈值

影响分数

要计算布局变化分数,浏览器将查看视口大小以及两个渲染帧之间视口中不稳定元素的移动。布局偏移分数是该运动的两个度量的乘积:冲击分数距离分数

layout shift score = impact fraction * distance fraction

冲击分数

冲击分数衡量的是变动元素在两渲染帧之间对页面视口的影响。前一帧和当前帧的所有不稳定元素的可见区域的并集(作为视口总面积的一部分)是当前帧的影响分数。

在上图中,有一个元素在一帧中占据了视口的一半。然后,在下一帧中,元素下移视口高度的25%。红色的虚线矩形表示两个帧中元素的可见区域的并集,在这种情况下,其为总视口的75%,因此其影响分数为0.75。

距离分数距离分数是不稳定元素在视口中移动的最大距离(水平或垂直)除以视口的最大尺寸(宽度或高度,取较大的)。

在上面的例子中,最大的视口尺寸是高度,不稳定元素移动了视口高度的25%,这使得距离分数为0.25。

所以,在这个例子中,影响分数是0.75,距离分数是0.25,所以布局移位分数是0.75 * 0.25 = 0.1875。

向现有元素添加内容如何影响布局移位分数

图中"Click Me!"按钮被添加到带有黑色文本的灰色框的底部,它将带有白色文本的绿色框向下推(并部分推出视口)。

在这个例子中,灰色框改变了大小,但是它的起始位置没有改变,所以它不是一个不稳定的元素。按钮以前并不在DOM中,因此它的起始位置也不会改变。

然而,绿色方块的起始位置确实会发生变化,但由于它已经部分移出了视口,所以在计算冲击分数时,不可见区域并不会被考虑在内。两个帧中绿色框的可视区域(用红色虚线矩形表示)的联合与第一个帧中50%视口的绿色框的区域相同。冲击分数为0.5。

距离分数用紫色箭头表示。绿框已经向下移动了大约14%的视口,所以距离分数是0.14。

布局位移得分为0.5 x 0.14 = 0.07。

多个不稳定元素

在上面的第一帧中,有一个动物的API请求的四个结果,按字母顺序排序。在第二帧中,更多的结果被添加到排序列表中。

列表中的第一项(“Cat”)不会在帧之间改变它的起始位置,所以它是稳定的。类似地,添加到列表中的新项以前并不在DOM中,因此它们的起始位置也不会改变。但标有"狗"、"马"和"斑马"的物品都改变了它们的起始位置,使它们成为不稳定的元素。

红色的虚线矩形再次代表这三个不稳定元素的前后区域的结合,在这个例子中大约是视口区域的38%(撞击率为0.38)。

箭头表示不稳定元素从起始位置移动的距离。用蓝色箭头表示的"斑马"元素移动得最多,移动了视口高度的30%左右。这个例子中的距离分数是0.3。

布局位移分数是0.38 x 0.3 = 0.1172。

预期 VS 意外的布局变化

并不是所有的布局变化都是不好的。事实上,许多动态web应用程序经常改变页面上元素的起始位置。

只有在用户非预期的情况下,布局的改变才是糟糕的。另外,在响应用户交互时(点击一个链接,按下一个按钮,输入一个搜索框等等)出现的布局变化通常是好的,只要这种变化发生在距离交互足够近的地方,用户能够清楚地看到这种关系。

动画和过渡是更新页面内容的好方法,不会让用户感到意外。页面上突然移动内容几乎总是会造成糟糕的用户体验。但是,从一个位置逐渐自然地移动到另一个位置的内容通常可以帮助用户更好地理解发生了什么。

CSS transform属性允许你在不触发布局移位的情况下动画元素,比如使用transform: scale()代替改变高度和宽度属性。要移动元素,请避免更改顶部、右侧、底部或左侧属性,可以使用transform: translate()代替。

如何衡量CLS

HTTP

  • HTTP 报文结构是怎样的?

  • HTTP有哪些请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。*

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-TQbPZJvy-1713116435541)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值