美文网首页
<计算机与网络篇> 浏览器渲染机制

<计算机与网络篇> 浏览器渲染机制

作者: Max_Law | 来源:发表于2023-12-31 14:52 被阅读0次

浏览器的渲染机制是一个复杂的过程,主要包括以下几个步骤:

1. 请求和解析 HTML

  • 当用户输入 URL 或者点击链接时,浏览器发送 HTTP(S)请求到服务器获取 HTML 文件。
  • 浏览器接收到 HTML 文件后开始解析它,构建一个 DOM(Document Object Model)树。DOM 树是页面内容的结构化表示,每个 HTML 元素在 DOM 树中都是一个节点。

2. 解析 CSS 和 JavaScript

  • 浏览器同时也会请求并解析 CSS 文件(包括内联样式和外部样式表),生成 CSSOM(CSS Object Model)树。CSSOM 描述了如何呈现每个 DOM 节点的样式规则。
  • 如果 HTML 文件中包含 JavaScript,浏览器会执行这些脚本。JavaScript 可能修改 DOM 或 CSSOM,因此这个过程可能会导致前面的步骤需要重新计算。

3. 构建渲染树

DOM 树和 CSSOM 树合并成一个渲染树(Render Tree)。渲染树包含了所有可见内容的节点以及它们的计算样式。不可见的元素,如display: none的元素,不会出现在渲染树中。

4. 布局(也称为回流或重排)

渲染树构建完成后,浏览器需要计算每个节点在屏幕上的确切位置和大小,这个过程叫做布局或回流。布局算法会考虑到元素的尺寸、位置、浮动、定位等因素。

5. 绘制(也称为 painting 或重绘)

知道每个节点的位置和大小后,浏览器将按照从后向前的顺序,逐个绘制每个节点的内容。绘制过程通常包括以下阶段:填充、描边、合成和其他效果。

6. 合成和光栅化

对于一些复杂的动画或效果(GraphicsLayers Tree),浏览器可能会使用 GPU 加速来提高性能。这涉及到将绘制的元素分成多个层,然后对这些层进行合成和光栅化操作,最终将结果输出到屏幕上。

7. 重排和重绘优化

为了提高渲染效率,浏览器会尽可能地减少重排和重绘的次数。例如,当元素的样式改变但不影响其几何属性(如颜色变化)时,只需要重绘而不需要重排。

注意:这个过程是动态的,任何对 DOM 或 CSSOM 的修改都可能导致部分或全部步骤的重新执行。前端优化的一个重要方面就是理解和优化这些渲染步骤,以提高页面的加载速度和交互响应性。


回流(Reflow)和重绘(Repaint)

回流(Reflow)和重绘(Repaint)是浏览器渲染过程中的两个重要概念,它们涉及到页面布局和呈现的更新。

回流(Reflow 或 Layout)

  • 回流是指当 DOM 树中元素的几何属性(如尺寸、位置)发生变化,或者 CSS 样式改变影响到元素布局时,浏览器需要重新计算元素的布局信息的过程。这可能涉及到整个文档或者其他受影响的部分。
  • 回流是一个计算密集型的操作,因为它需要重新计算元素的位置和大小,以及其他元素可能因此受到影响的位置和大小。例如,更改元素的宽度、高度、边距、位置、字体大小或者添加/删除可见的 DOM 元素都可能导致回流。

重绘(Repaint 或 Redraw)

  • 重绘是指当一个元素的外观发生改变但不影响其几何属性时,浏览器需要更新该元素的像素信息并重新绘制它的过程。例如,改变元素的颜色、背景色、边框样式、阴影效果等都不会影响元素的位置和大小,所以只需要重绘。
  • 相比于回流,重绘是一个相对较轻量的操作,因为它不需要重新计算布局。然而,如果大量元素需要重绘,或者在短时间内频繁重绘,仍然会对性能产生影响。

为了优化性能,浏览器会尽量减少不必要的回流和重绘。以下是一些相关的优化策略:

  • 避免不必要的 DOM 操作:减少 DOM 元素的添加、删除和修改可以降低回流的发生。
  • 批量修改样式:一次性修改多个样式而不是逐个修改,可以将多次回流合并为一次。
  • 使用 CSS3 硬件加速:对于复杂的动画和图形,使用 CSS3 的 transform 和 opacity 属性可以利用 GPU 进行合成,减少对 CPU 的依赖。
  • 将改变样式和布局的 JavaScript 代码放在请求 AnimationFrame 回调函数中:这样可以确保在下一帧渲染前集中处理所有的变化,而不是在每一处变化时立即触发回流或重绘。

理解并优化回流和重绘是提高网页性能的关键步骤之一。通过合理地组织和执行 DOM 操作,可以显著提升用户的浏览体验。

相关文章

  • <计算机与网络篇> HTTP 缓存机制

    接着上篇《<计算机与网络篇 > web缓存机制》,其细分出来四个缓存机制,而前端工程师能干预的也只有浏览器缓存这一...

  • 浏览器原理相关视频课程

    大话浏览器渲染原理浏览器渲染原理和打开网页机制HTTPS 网络协议原理解析从零开始,彻底掌握浏览器渲染原理深入V8...

  • 性能优化

    网络层面 浏览器渲染 构建层面 服务端层面 1.资源的合并与压缩 2.图片的编码以及类型选择 3.浏览器渲染机制 ...

  • 略知一二之浏览器渲染原理

    浏览器渲染原理 推荐相关阅读文章 浏览器页面渲染机制,你真的弄懂了吗? 关键渲染路径 深入浅出浏览器渲染原理 [译...

  • 前端渲染机制及重绘/回流

    渲染机制 渲染步骤 浏览器的渲染机制一般分为以下几个步骤: 1. 处理 HTML 并构建 DOM 树。2. 处...

  • 浏览器渲染

    为什么需要明白浏览器渲染原理 页面的设计与实现之后,前端工程师就需要关注性能优化了。其中浏览器渲染机制是前端性能优...

  • 浏览器渲染机制

    为深入了解vue mvvm模式的优劣 现从浏览器渲染机制开始从头梳理 首先,浏览器将域名通过网络通信从服务器上拿到...

  • EventLoop 事件循环机制

    什么是EventLoop? 浏览器协调用户操作、渲染、网络请求,硬件控制等事件源执行顺序的机制. 外部队列(Tas...

  • 性能优化之HTTP

    内容提要 浏览器渲染过程 DNS TCP三次握手 HTTP缓存机制 CDN与集群 还记得HTTP协议吗? 浏览器先...

  • 重绘(redraw或repaint),重排(reflow)

    浏览器运行机制图: 浏览器的运行机制:layout:布局; 1、构建DOM树(parse):渲染引擎解析HTML文...

网友评论

      本文标题:<计算机与网络篇> 浏览器渲染机制

      本文链接:https://www.haomeiwen.com/subject/eqfxndtx.html