回流为什么会对性能产生印象

简介

当我们更改与布局相关的属性(例如元素的widthheightmargin)时,会发生布局重新计算导致"回流"

例如,可能希望具有从网格视图切换到列表视图的功能。在这种情况下,触发回流对于功能至关重要。

不太理想的情况可能是通过可能加载缓慢的 JavaScript 添加到页面的广告。该 JavaScript 可能会调整插入广告的元素大小,从而导致用户访问期间每个页面加载时发生回流。这种类型的重排可能会以多种方式对用户体验产生负面影响,例如中断阅读流程和延迟其他交互。


当我们更改与布局相关的属性时,我们会触发像素管道。这是浏览器渲染引擎执行的一系列步骤,以在屏幕上显示实际的变化。

像素管道涉及几个步骤:

  1. 布局(回流): 浏览器重新计算受布局相关属性更改影响的元素的几何形状。此计算确定元素在浏览器窗口中的位置。
  2. 绘制: 布局重新计算后,浏览器渲染每个元素的视觉特征,如颜色、边框和阴影。
  3. 合成: 浏览器然后将绘制的图层组合起来以生成在屏幕上显示的最终图像。

回流可能会对 CPU 造成沉重负担,因为它们涉及复杂的算法来处理 CSS 规则并确定页面布局内的元素对齐和约束。

回流的因素

CPU 可以被视为计算机的"大脑",它能够按顺序或单个线程处理指令。回流的问题是由以下几个因素引起的:

  • CPU 必须解释并执行 CSS 规则来确定页面上元素的几何形状。这可能是一项繁重的操作,需要复杂的计算和逻辑评估。
  • CPU 可以处理多个任务,但一次只能专注于一项任务。在回流期间,其他重要操作(例如用户输入处理和脚本执行)可能会延迟,这可能会导致延迟。
  • 由于页面通常嵌套得很深,因此单个布局更改可能会导致级联重新计算和更新,从而给 CPU 带来额外负担。
  • 虽然级别较低,但 CPU 必须经常访问和更改内存以进行计算以及更新渲染树和绘画。低效的内存访问可能会导致缓存未命中和内存检索速度变慢,从而进一步减慢渲染过程。

那么,为什么回流会对性能产生负面影响呢?

回流需要大量 CPU 资源来运行计算和更新渲染树。此过程会降低整体速度和用户体验。

由于 CPU 可能会因这些任务而不堪重负,因此其处理用户交互和脚本执行等其他任务的能力会下降,从而导致渲染速度变慢并降低响应能力。

无法处理其他任务可能会导致明显的延迟、布局变化和页面无响应,这直接影响用户与网站的交互方式。此类问题不利于用户体验,并影响关键指标。

点赞收藏支持、手留余香、与有荣焉,动动你发财的小手哟,感谢各位大佬能留下您的足迹。

往期热门精彩推荐

# 关于浏览器调试的30个奇淫技巧

# Next.js 的路由为什么是这样的

# 2024最新程序员接活儿搞钱平台盘点

解锁 JSON.stringify() 5 个鲜为人知的功能

解锁 JSON.stringify() 7 个鲜为人知的坑

如何去实现浏览器多窗口互动

面试相关热门推荐

前端万字面经------基础篇

前端万字面积------进阶篇

简述 pt、rpx、px、em、rem、%、vh、vw的区别

实战开发相关推荐

前端常用的几种加密方法

探索Web Worker在Web开发中的应用

不懂 seo 优化?一篇文章帮你了解如何去做 seo 优化

【实战篇】微信小程序开发指南和优化实践

前端性能优化实战

聊聊让人头疼的正则表达式

获取文件blob流地址实现下载功能

Vue 虚拟 DOM 搞不懂?这篇文章帮你彻底搞定虚拟 DOM

移动端相关推荐

移动端横竖屏适配与刘海适配

移动端常见问题汇总

聊一聊移动端适配

Git 相关推荐

通俗易懂的 Git 入门

git 实现自动推送

更多精彩详见:个人主页

相关推荐
m0_748236114 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
Watermelo61717 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
m0_7482489418 分钟前
HTML5系列(11)-- Web 无障碍开发指南
前端·html·html5
m0_7482356130 分钟前
从零开始学前端之HTML(三)
前端·html
一个处女座的程序猿O(∩_∩)O2 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
hackeroink5 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss
LCG元7 小时前
【面试问题】JIT 是什么?和 JVM 什么关系?
面试·职场和发展
迷雾漫步者7 小时前
Flutter组件————FloatingActionButton
前端·flutter·dart
向前看-7 小时前
验证码机制
前端·后端
燃先生._.8 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js