您的位置:首页 > 科技 > 能源 > app制作教程视频全集_简单好看个人主页网站模板_优化大师的作用_百度提交网站收录入口

app制作教程视频全集_简单好看个人主页网站模板_优化大师的作用_百度提交网站收录入口

2024/11/18 14:16:48 来源:https://blog.csdn.net/weixin_63625059/article/details/142309065  浏览:    关键词:app制作教程视频全集_简单好看个人主页网站模板_优化大师的作用_百度提交网站收录入口
app制作教程视频全集_简单好看个人主页网站模板_优化大师的作用_百度提交网站收录入口

在这里插入图片描述

认识回流reflow和重绘repaint

理解回流reflow:(也可以称之为重排)

第一次确定节点的大小和位置,称之为布局(layout)。
之后对节点的大小、位置修改重新计算称之为回流

什么情况下引起回流呢?

比如DOM结构发生改变(添加新的节点或者移除节点)

比如改变了布局(修改了width、height、padding、font-size等值)

比如窗口resize(修改了窗口的尺寸等)

比如调用getcomputedstyle方法获取尺寸、位置信息

理解重绘repaint

第一次渲染内容称之为绘制(paint)之后重新渲染称之为重绘

什么情况下会引起重绘呢?

比如修改背景色、文字颜色、 边框颜色、样式等;

回流和重绘的性能优化

回流一定会引起重绘,所以回流是一件很消耗性能的事情

所以在开发中要尽量避免发生回流:
  1. 修改样式时尽量一次性修改
    比如通过cssText修改,比如通过添加class修改
  2. 尽量避免频繁的操作DOM
    我们可以在一个DocumentFragment或者父元素中将要操作的DOM操作完成,再一次性的操作
  3. 尽量避免通过getcomputedstyle获取尺寸、位置等信息
    频繁调用getcomputedstyle会导致回流,因为浏览器需要提供准确的计算值
  4. 对某些元素使用position的absolute或者fixed
    并不是不会引起回流,而是开销相对较小,不会对其他元素造成影响
    额外的方法
    新的合成层(compositingLayer):在特定情况下,可以创建新的合成层,并且新的图层可以利用GPU来加速绘制也可以提供性能
特殊解析-composite合成
绘制的过程,可以将布局后的元素绘制到多个合成图层中

这是浏览器的一种优化手段;

默认情况下,标准流中的内容都是被绘制在同一个图层(Layer)中的;

而一些特殊的属性,会创建一个新的合成层(compositinglayer),并且新的图层可以利用GPU来加速绘制

因为每个合成层都是单独染的;

那么哪些属性可以形成新的合成层呢?常见的一些属性

  1. 3Dtransforms
  2. video、 canvas、 iframe
  3. opacity动画转换时;
  4. position:fixed
  5. will-change:一个实验性的属性,提前告诉浏览器元素可能发生哪些变化;
  6. animation或transition设置了opacity、transform
    分层确实可以提高性能,但是它以内存管理为代价,因此不应作为web性能优化策略的一部分过度使用。

面试回答

定义回流(Reflow)在浏览器染过程中的意义,并解释何时回触发回流?

回流是器染过程中的一个阶 涉及计算所有元素的位置和大小

当DOM的结构发生任何改变时(例如元素的添加、 移除、移动或大小变化) 浏览器需要重新计算元素的几何属性 然后确定它们在页面上的确切位置文个过程是必需的 因为页面布局是动态的元素的变化可能影响它元的布局。
但是我们要尽量避免或者减少回流的发生,因为这个过程也是非常消耗性能的。

什么情况下引起回流呢?

比如DOM结构发生改变(添加新的节点或者移除节点);
比如改变了布局(修改了width、height、padding、font-size等值
比如窗口resize(修改了窗口的尺寸等)
比如调用getcomputedstyle方法获取尺寸、位置信息
等等

回流是一个计算密集的过程,可能会影响到网页的性能,特别是在复杂的页面布局中。

因此,优化网页以减少不必要的回流是提高性能的重要策略和手段。

这包括尽量减少在一个操作过程中对DOM的多次修改 用CSS的类进行样式变更等

这也是现代框架Vue、Reac的源码内部经常会涉及到的优化手段.(这里可能引出进一步问你Vue、Rect源码的问题)

解释什么是重绘(Repaint儿以及它在浏览器染网页时的作用

绘是浏览器染过程中的个步骤,它涉及到更新页面中元素的视觉表现 但不涉及这些元条的布局位置
重绘发生在元素的外观变化时,如改变颜色、阴影或者透明度等
这些变化不会影响到元素的几何结构(即位置和形状).

什么情况下会引起重绘呢?

比如修改背景色、文字颜色、边框颜色、样式等
⭐⭐⭐ 回流一定会引起重绘,所以回流是一件很消耗性能的事
虽然重绘不涉及布局的变化,因此比回流成本低,但是也会对性能造成负面影响。我们开发中可以通过下面的方案来进行优化
合并视觉变更:尽可能在一次操作中合并多个视觉变更,以减少绘的次数

新的合成层 (CompositingLayer):在特定情况,可以创建新的合成层,并新的图层可以利用GPU来加速绘制也可以提供性能

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com