前端性能优化之理解JavaScript的重排和重绘

前端-面试八股文(知识点笔记) a. 浏览器请求资源时首先命中资源的Expires 和 Cache-Control,Expires 受限于本地时间,如果修改了本地时间,可能会造成缓存失效,可以通过Cache-control: max-age指定最大生命周期,状态仍然返回200,但不会请求数据,在浏览器中能明显看到from cache字样。b. 强缓存失效,进入协商缓存阶段,首先验证ETagETag可以保证每一个资源是唯一的,资源变化都会导致ETag变化。服务器根据客户端上送的If-None-Match值来判断是否命中缓存。 阅读详情

一. 什么是重排,重绘 ?

重排: 重新渲染DOM树。
当渲染树中元素的布局,隐藏等发生改变时, 会发生重绘即回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。

重绘:元素外观发生改变。
当盒子的颜色、字体大小等发生改变时浏览器会重新绘制该元素,将内容呈现在页面上。(改变元素外观属性。如:color,background-color等会触发重排)

  • 重排必定会引发重绘,但重绘不一定会引发重排
  • 重排重绘都比较影响性能,但是重排相对来说更费性能

二. 什么时候发生重排,重绘?

  1. 重排:元素布局发生改变,如:
    (1)display:none;
    (2)节点的创建与删除
    (3)边距,边框,宽高发生改变
    (4)获取窗口的属性以及改变
  2. 重绘:元素外观发生改变
    (1)背景颜色发生改变
    (2)字体大小发生改变

三. 怎么减少重排,重绘 ?

  1. 若要发生多次重排,使该元素脱离文档流之后在进行操作,这样就只会发生两次重排。
  2. 把经常用的浏览器的值获取一次之后就缓存到变量中。
  3. 分离读写操作。
前端路线总结,重排和重绘如何触发和避免区别,执行this绑定,输入URL到页面加载全过程,跨域的原理, 粘包问题分析与对策,Cookie、sessionStorage、localStorage 的区别 前端学习 阅读详情

相关推荐

DOM操作是JavaScript与网页交互的核心

DOM操作是JavaScript与网页交互的核心

wo1141786653的博客 33

【前端面经】CSS-回流和重绘

回流(回流)必将引起重绘, 重绘不一定引起回流(重排)

欢迎光临~ 1115

电磁流量计模拟前端电路设计与优化

模拟前端电路(AFE)是传感器信号处理的核心环节,通过放大、滤波和模数转换实现信号调理。其设计需重点考虑放大器共模抑制比(CMRR)和ADC分辨率等关键参数,在电磁流量计等工业测量应用中,AD8220仪表放大器与AD7172-2 Σ-Δ型ADC的组合能有效简化传统多级架构。现代过采样技术结合数字滤波可替代模拟滤波器,显著提升系统集成度与测量精度,这种设计方法同样适用于压力传感、生物电信号采集等需要高精度信号调理的场景。

weixin_42602241的博客 618

哪些操作影响重排

当通过JavaScript访问offsetTop、offsetLeft、offsetWidth、offsetHeight等属性时,浏览器可能需要重新计算元素的位置和尺寸,从而触发重排。修改页面上的字体或字体相关属性可能导致浏览器重新计算文本的大小和布局,触发重排。当用户滚动页面时,浏览器需要重新计算可视区域内元素的布局,可能触发重排。修改元素的宽度和高度,包括边距、填充和边框大小,都可能导致重排。,浏览器默认字体大小的改变可能会导致所有文本的重排。,浏览器的默认缩放级别的改变可能会导致重排。

qq_56918166的博客 744

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4376

一文读懂 MAVLink、PPM、SBUS:无人机通信协议的工作原理与适用场景

本文系统对比无人机领域三大核心通信协议:MAVLink作为全链路数据协议,支持飞控与地面站的双向通信,适合航拍测绘等专业场景;SBUS是数字化的高效控制协议,具备16通道、抗干扰特性,成为中高端设备标配;PPM作为传统模拟协议,成本低廉但性能有限,适合入门级应用。文章深入解析各协议的工作原理、帧结构、适用场景及调试技巧,指出MAVLink侧重状态监控、SBUS/PPM专注控制指令的互补关系,并给出新手选型建议:入门选PPM,进阶用SBUS,开发必备M

bother3000的博客 7123

JavaScript 浏览器的重排和重绘

虽然可以通过JavaScript操作DOM元素,但是代价却是高昂的。我们可以将DOM和JavaScript想象成两个岛,它们之间的连接需要通过一座桥,而JavaScript对DOM的访问就需要通过这座桥,并收取“过桥费”,随着对DOM访问次数的增加,费用也就越高,因此我们需要尽量减少“过桥”的次数,也就是减少对DOM的访问和修改,而这也是优化DOM性能的手段之一。 对DOM的修改相比于对DOM的访问,在性能上的影响会更大,这是因为它会带来浏览器的重排或重绘。

xiangxiongfly 2451

JLink版本不兼容?手把手教你解决APM32F003F6P6在Keil中烧写闪退和报错

本文详细解析了APM32F003F6P6在Keil中烧写闪退和报错的解决方案,重点介绍了JLink版本兼容性问题。通过实测不同版本组合,推荐使用JLink 7.20a或6.86b与Keil 5.25的黄金组合,并提供详细的降级驱动和工程配置步骤,帮助开发者高效解决烧写困境。

weixin_33694620的博客 416

重排和重绘--JS

重排和重绘

weixin_44891495的博客 358

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 540

十、Teigha.Net示例的源代码下载链接,以及英文的chm说明文件和相关案例

目录官方案例demo下载Teigha.net 英文版手册下载Teigha.net Entity实体中文翻译Teigha4.0 解决闪烁问题demo下载Teigha4.0 收录demo案例类似CAD看图王软件无AutoCAD环境下操作显示CAD文件的功能源码,整个示例模块源码 官方案例demo下载 在之前找到的官方案例3_03版本中包含32位与64位dll 其中的chm的说明文件内容也不完全,后面有更为详细的英文版的chm; 示例项目中,主要包括一个winfrom程序与控制台程序,OdWriteExMgd

... 3517

JS的重绘(repaints)和重排(reflows)

例如,容器节点的渲染树改变时,会触发子节点的重新计算,也会触发其后续兄弟节点的重排,祖先节点需要重新计算子节点的尺寸也会产生重排。可见,重排一定会引起浏览器的重绘,一个元素的重排通常会带来一系列的反应,甚至触发整个文档的重排和重绘,性能代价是高昂的。查询某些属性或调用某些计算方法:offsetWidth、offsetHeight等,除此之外,当我们调用 getComputedStyle方法,或者IE里的 currentStyle 时,也会触发重排,原理是一样的,都为求一个“即时性”和“准确性”。

subsistent的博客 1345

全局注意机制 GAM | Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions

全局注意机制 GAM

Coding... 2575

你需要知道的网页渲染性能优化方法(上)

关注公众号前端开发博客,回复“加群”加入我们一起学习,天天进步作者:晨风明悟链接:https://zhuanlan.zhihu.com/p/39878259性能优化上文简单介绍了浏览器...

前端开发博客 1895

PostgreSQL性能优化:如何搭建监控体系?

本文系统讲解如何构建企业级PostgreSQL监控体系,覆盖四大核心维度:基础设施层、数据库实例层、会话与查询层、对象与存储层。通过Prometheus+Grafana+ELK等工具链实现指标采集、可视化与告警闭环管理,详细解析关键监控指标、部署方法及告警策略设计,帮助DBA快速定位慢查询、连接泄漏、存储膨胀等典型故障,构建"看得见、管得住、防得早"的数据库运维能力。

数据知道的博客 2232

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

前端系列之:浏览器渲染流程

前端系列之:浏览器渲染流程

程序员SKY的博客 709

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

前端面试:浏览器渲染流程与性能优化核心

浏览器渲染流程的核心是DOM、CSSOM、渲染树的构建,以及布局、绘制和合成。性能优化关键在于最小化重排重绘、优化资源加载和高效执行代码。在面试中,强调实际案例(如使用优化动画)能展示深度。记住,优化是持续过程:测试、测量、迭代是保持高性能的基础。

jsdhxfsdss的博客 634

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

学习记录——前端性能优化

前端页面是直接与用户交互的,用户体验性好与否取决于性能,所以前端性能优化是非常重要的。 前端如何优化性能呢 1、减少http请求 一个完整的http请求需要经过: (1)DNS解析,将域名解析为ip地址 (2)TCP连接,TCP三次握手 (3)发送HTTP请求 (4)服务器接受响应,返回HTML文件给浏览器 (5)浏览器得到HTML文件之后开始渲染页面 (6)断开连接,TCP四次挥手 所以必须减少http请求,可以将多个小文件合并为一个大文件。 2、使用服务器端渲染 浏览器渲染一个页面 .

belle_mei的博客 162

Fay框架前端性能优化技术分享:视频教程

在数字化快速发展的今天,用户对前端应用的性能要求越来越高。Fay作为一款开源数字人框架,其前端性能直接影响用户体验。本教程将从多个方面详细介绍Fay框架前端性能优化的实用技术,帮助开发者提升应用响应速度和运行效率。 ## 前端架构概览 Fay框架的前端部分主要由CSS样式文件和JavaScript脚本文件构成,它们共同协作构建了用户与数字人交互的界面。 ### 主要文件结构 前端核心文件集...

gitblog_00942的博客 347

20210226某体育公司前端面试总结

目录 讲下react生命周期 js的数据类型 什么是闭包 Vue和react的区别 性能优化 输入URL到页面渲染的整个流程 如何处理跨域问题 谈谈你对原型链的理解 重排和重绘 你做过一些什么基础的搭建 项目中最难的问题是什么 HTTPS是如何保证安全的 你怎么带实习生的 你遇到的最难的技术问题是什么 后端设置cors,跨域后,前端怎么设置,后端可以拿到cookie 谈一下你对js运行机制的理解 浏览器渲染机制 前端怎么实现微信的授权 diff算法原理 讲下hooks的使用 讲下reactNative

uperficialyu的博客 579

Web性能优化

Web前端性能优化的9大问题 1、请减少HTTP请求基本原理: 在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出。 一个正常HTTP请求的流程简述:如在浏览器中输入"www.xxxxxx.com"并按下回车,浏览器再与这个URL指向的服务器建立连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求的信息后再返回相应的信息,浏览...

document_ljt的博客 227

前端攻略系列(一) - 前端各种优化(保证持续更新)

  还有一个小时才到2012,那还能有点时间写点吐槽的东西,嘿嘿...2011年12月绝对是本人工作以来压力最大的一个月,已经忙到睡觉时间少了,业余看书时间少了,身体开始报警了,肩膀上的责任压的我实在喘不过气...作为一个普通的北漂,在北京类似我这样的人海的去了,尤其是在咱们这个行业。   我非常热爱生活,每分钟都无比珍贵;我热爱我现在所做的一切,哪怕确实让我精疲力尽(所以写博客暂时被我当成减压...

weixin_30871905的博客 79

【前端面试题目】

暂时性死区:let/const 声明的变量,在声明前访问会报错(从作用域开始到声明前的区域称为 TDZ)。变量提升:var 声明的变量会被 “提升” 到作用域顶部(但赋值不会提升);函数声明也会整体提升。默认绑定:普通函数调用 → this 指向全局(严格模式下为 undefined);new 绑定:new Person() → this 指向新创建的对象;显式绑定:call/apply/bind → this 指向指定对象;隐式绑定:obj.fn() → this 指向 obj;this 的指向问题。

Wancc123的博客 416

前端面试总结

一、HTML 二、CSS

qq_42966709的博客 215

前端面试问题总结

1. H5开发过程中怎么处理异型屏的安全区域? https://segmentfault.com/a/1190000040555424?utm_source=sf-similar-article 2. 前端性能优化 https://www.cnblogs.com/xiaohuochai/p/9178390.html 3. 重绘重排 https://www.cnblogs.com/soyxiaobi/p/9963019.html 4. _proto 和 prototype 的区别 https://www.zh

weixin_42192113的博客 138

虚拟DOM和Diff算法?

什么是虚拟 DOM?虚拟 DOM 是用 JavaScript 对象描述真实 DOM 结构,通过 Diff 算法对比新旧虚拟 DOM,计算最小更新,然后同步到真实 DOM,从而提高页面渲染性能。Diff 算法优化策略1️⃣ 同层比较2️⃣ 不同类型直接替换3️⃣ key 优化列表更新。

qq_25416827的博客 235
上一篇: new操作符具体干了什么?(4个步骤)
下一篇: es6中let和const
apple_2021
博客等级 码龄8年 1529粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值