从浏览器的渲染角度来进行性能优化

news/2024/12/17 20:27:31/文章来源:https://www.cnblogs.com/kongshu-612/p/18613360

从浏览器的渲染角度来进行性能优化

性能瓶颈

  • js 执行引擎与渲染引擎是互斥的,他们是共同存在与浏览器的 UI 线程里面
  • js 引擎负责执行我们的 js 代码从而产生 Dom 树, 渲染引擎则是依据 Dom 树,样式树来构建渲染树,然后排版与绘制,然后组合,从而计算出显示的像素点。
  • 整个的流程需要在一帧内完成,这样才能达到很好的性能要求,通常是 16ms,如果时间超过这个时间,就会出现所谓的丢帧的现象。
  • 对于渲染引擎而言,排版与绘制是比较耗时的。所以要尽量减少重绘重排的情况。

强制渲染

  • 如果我们在 js 里面修改了 DOM 的某些影响布局的属性,紧接着,我们尝试读取这些属性,那么这样的代码会导致强制渲染,这种读写混合的写法就称为Layout Thrashing
  • 如果我们的 js 代码只是修改 DOM 的这些影响布局的属性,但是不读取,那么浏览器会去做渲染合并,从而提供性能

React/Angular/Vue 这样的前端 SPA 框架是如何提升性能的

  • 他们采用 Virtual Dom 的计算来记录当前 Dom 的状态,在执行变更检测的时候,读写的对象是来自于 Virtual DOM, 避免了Layout Thrashing.这个过程也就是我们常说的 Render 阶段
  • 然后计算出新旧 Virtual Dom 的差异后,它会将真正需要变化的更新到真正的 DOM 上,这个是一个只写的操作,这个过程也就是我们常说的 Commit 阶段
  • 这个点就是这些框架实现读写分离的地方

性能优化的点很大,这个是从浏览器的角度通过读写分离的方式来优化性能。这也是为什么我们避免直接去操作 DOM,或者说直接操作 DOM 会带来性能问题的原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854486.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UML上机实验 3

在确定了类之后,下一步是分析类之间的关系,特别是继承关系和关联关系。在本实验中继承关系较为简单,如 Product 类可以有多个具体的商品子类;而关联关系则比较复杂,如 Store 类与 SalesData、Inventory 等类之间的关联,表明店铺与销售数据、库存管理密切相关。在Rational…

使用 Golang 和模板引擎创建网站

使用 Golang 和模板引擎创建网站 原创 源自开发者 源自开发者 2024年12月17日 12:57 广东在过去,人们通常使用 HTML、CSS 和 JavaScript 来构建网站,同时在后端使用 PHP。如今,已经有许多 JavaScript 框架可供选择,比如 React.js、Next.js、Vue.js、Nuxt、Svelte、SvelteKi…

UML上机实验 1

安装了Visio并进行了简单的操作,通过这次实验学会了用Visio进行简单的制表,Visio界面直观,操作简单,比较容易上手。我尝试了绘制一个简单的流程图。整个过程非常顺畅,选择模板后,我只需要拖放不同的形状到画布上,然后通过连接线(使用自动连接功能)把这些形状串联起来,…

DL00336-基于多种机器学习模型的新能源电池寿命预测完整代码含数据集

随着新能源技术的迅速发展,电池作为核心组件在电动汽车、储能系统等领域的应用日益广泛,电池寿命预测成为关键技术之一。传统的电池寿命预测方法依赖于物理模型和经验公式,但这些方法无法有效应对电池老化过程中的复杂性与非线性特征。机器学习,尤其是基于多种模型的集成方…

OOP实验六

实验任务一:#pragma once#include <iostream> #include <stdexcept>// 声明 //////////////////////////////////////////////////// // 复数模板类声明 template<typename T> class Complex { public:Complex(T r = 0, T i = 0);Complex(const Complex<…

MeteoInfo-Java解析与绘图教程(十)_JAVA绘制雷达PPI图

天气雷达的基本要素有很多,特别是双偏振雷达更多,但业务场景经常使用的一般为基本反射率,基本速度这两种要素 接下来我们以基本反射率为例,其他的要素也是一样的,一通百通 首先我们做基本反射率的图需要确定做哪一个仰角层,因为雷达体扫模式的扫描是不同仰角进行扫描的,常规的雷…

友情链接

风筝上的猫IT分享--肯定放我自己了访问博客风筝上的猫IT分享--肯定放我自己了访问博客

画8.0

因为期末周忙着做汇报和复习 (其实是因为自己比较懒) ,所以这幅画完成的相当迟了。 头发画起来真实相当费劲啊。

都在使用的《模版模式》

模版符合开闭原则,到处用于钩子方法。有的钩子方法不会改变行为,有的钩子会改变运行轨迹。框架中到处使用。Channel中定义了需要的操作,AbstractChannel实现了核心功能,然后不同的Channel实现只需要告知具体channel的描述信息即可。 Channel 接口⬇︎⬇︎⬇︎点击查看代码 …

ifconfig命令

ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。配置网卡的IP地址语法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0 在 实体机上 ifconfig 命令用于 显示或配置网络设备(网络接口卡) 或修改。(以CentOS…

数据智能,融合创新|12月中国数据库行业分析报告已发布, 持续为产业助力

本期报告以数据智能与融合创新为主题,除详解国产数据库市场动向外,探究了在云计算的推动下数据库自治、智能运维能力的产品创新实践,欢迎免费下载。为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析…

maven仓库

https://mvnrepository.com/