首页 > 其他分享 >浏览器的渲染原理

浏览器的渲染原理

时间:2024-10-07 19:22:04浏览次数:6  
标签:CSSOM 浏览器 DOM 渲染 阻塞 JS 原理

浏览器渲染原理

五个渲染流程

  1. Parse 阶段:解析 HTML

  1. Style 阶段:样式计算

三个阶段:

  • 收集,划分和索引所有样式表中存在的样式规则
  • 访问每个元素并找到适用于该元素的所有规则,CSS 引擎遍历 DOM 节点,进行选择器匹配,并且匹配的节点执行样式设置
  • 结合层叠规则和其他信息为节点生成最终的计算样式,这些样式的值可以通过 window.getComputedStyle() 获取

CSSOM 和 DOM 是并行创建的,构建 CSSOM 不会阻塞 DOM 的构建。但 CSSOM 会阻塞 JS 的执行,因为 JS 可能会操作样式信息。

虽然 CSSOM 不会阻塞 DOM 的构建,但在进入下一阶段之前,必须等待 CSSOM 构建完成,这就是通常说的 CSSOM 会阻塞渲染。

  1. Layout 阶段

创建 LayoutObject(RenderObject)树

Layout 树和 DOM 树不一定是一一对应的

  1. Paint 阶段

构建 PaintLayer(RenderLayer) 树

构建完成的 LayoutObject 树还不能拿去显示,因为它不包含绘制的顺序(z-index)

同时,也为了考虑一些复杂的情况,如 3D 变换、页面滚动等,浏览器会对上一步的节点进行分层处理。这个处理过程被称为建立层叠上下文

  1. 合成 Compositing

合成阶段在 CC(Chromium Compositor)线程中进行。

5.1 commit

commit 进行的过程中,主线程被阻塞

5.2 tiling & raster

raster(光栅化)是将 display item 中的绘制操作转换为位图的过程。

5.3 draw

5.4 display compositor(viz,visual 的简称)

浏览器渲染性能的优化

  1. 减少渲染中的重排重绘

浏览器重新渲染时,可能会从中间的任一步骤开始,直至渲染完成。因此,尽可能的缩短渲染路径,就可以获得更好的渲染性能。

  1. 优化影响渲染的资源
  • 关键 CSS 资源放在头部加载。
  • JS 通常放在页面底部。
  • 为 JS 添加 async 和 defer 属性。
  • body 中尽量不要出现 CSS 和 JS。
  • 为 img 指定宽高,避免图像加载完成后触发重排。
  • 避免使用 table, iframe 等慢元素。原因是 table 会等到它的 dom 树全部生成后再一次性插入页面中;iframe 内资源的下载过程会阻塞父页面静态资源的下载及 css, dom 树的解析。

标签:CSSOM,浏览器,DOM,渲染,阻塞,JS,原理
From: https://www.cnblogs.com/zjy4fun/p/18450460

相关文章

  • React Fiber 原理
    ReactFiber在React16之前的版本对比更新VirtualDOM的过程是采用Stack架构实现的,也就是循环加递归,这种方式的问题是一旦任务开始进行就无法被中断。如果应用中的组件数量庞大,VirtualDOM的层级比较深,主线程被长期占用,知道整颗VirtualDOM树比对更新完成之后主线程才......
  • 在浏览器上访问媒体资源配置【文件上传】
    1.根urls.py文件中fromdjango.contribimportadminfromdjango.urlsimportpath,include,re_pathfromdjango.views.staticimportservefromdjango.confimportsettingsurlpatterns=[#path('admin/',admin.site.urls),path('api/shipp......
  • 人工智能前沿研究热点与发展趋势原理与代码实战案例讲解
    人工智能前沿研究热点与发展趋势原理与代码实战案例讲解作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming1.背景介绍1.1问题的由来人工智能(ArtificialIntelligence,AI)作为计算机科学的一个分支,已经取得了长足的进步。从早期的专家系统到现在......
  • 14-恶意代码防范技术原理
    14.1概述1)定义与分类(MaliciousCode)它是一种违背目标系统安全策略的程序代码,会造成目标系统信息泄露、资源滥用,破坏系统的完整性及可用性。它能够经过存储介质或网络进行传播,从一台计算机系统传到另外一台计算机系统,未经授权认证访问或破坏计算机系统。常许多人认为“病毒”......
  • GATK joint calling的逻辑、原理与优势
    GATK(GenomeAnalysisToolkit)中的jointcalling是一种变异检测策略,它允许同时对多个样本进行变异位点的分析,以提高变异检测的准确性和效率。以下是jointcalling的一些关键原理和优势:数据共享:在jointcalling过程中,信息在所有样本间共享。这意味着如果一个样本在某个位点的......
  • ReentrantLock 实现原理
    文章目录ReentrantLock基本使用可重入锁等待可中断设置超时时间公平锁条件变量ReentrantLock原理加锁流程解锁流程可重入锁原理可打断原理公平锁原理条件变量原理ReentrantLock基本使用在Java中,synchronized和ReentrantLock都是用于确保线程同步的锁,都属于......
  • 浏览器事件处理机制:从硬件中断到事件驱动
    关键词:硬件中断,事件驱动,浏览器事件监听,操作系统抽象层,跨平台兼容性,事件冒泡与捕获摘要:本文深入探讨浏览器事件处理机制,从硬件中断到事件驱动模型,揭示了用户输入如何转化为页面响应。我们将了解操作系统的抽象层如何巧妙地连接硬件和应用程序,以及浏览器如何实现......
  • 浏览器事件处理机制:从硬件中断到事件驱动
    关键词:硬件中断,事件驱动,浏览器事件监听,操作系统抽象层,跨平台兼容性,事件冒泡与捕获摘要:本文深入探讨浏览器事件处理机制,从硬件中断到事件驱动模型,揭示了用户输入如何转化为页面响应。我们将了解操作系统的抽象层如何巧妙地连接硬件和应用程序,以及浏览器如何实现......
  • 浏览器事件处理机制:从硬件中断到事件驱动
    关键词:硬件中断,事件驱动,浏览器事件监听,操作系统抽象层,跨平台兼容性,事件冒泡与捕获摘要:本文深入探讨浏览器事件处理机制,从硬件中断到事件驱动模型,揭示了用户输入如何转化为页面响应。我们将了解操作系统的抽象层如何巧妙地连接硬件和应用程序,以及浏览器如何实现......
  • 浏览器事件处理机制:从硬件中断到事件驱动
    关键词:硬件中断,事件驱动,浏览器事件监听,操作系统抽象层,跨平台兼容性,事件冒泡与捕获摘要:本文深入探讨浏览器事件处理机制,从硬件中断到事件驱动模型,揭示了用户输入如何转化为页面响应。我们将了解操作系统的抽象层如何巧妙地连接硬件和应用程序,以及浏览器如何实现......