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

简介

当我们更改与布局相关的属性(例如元素的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 实现自动推送

更多精彩详见:个人主页

相关推荐
学不会•1 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜3 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点3 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow3 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o3 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic4 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā4 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
沉默璇年6 小时前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder6 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_882727576 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架