美文网首页
浏览器解析渲染页面

浏览器解析渲染页面

作者: 圆心角 | 来源:发表于2019-05-06 17:14 被阅读0次

浏览器的主要构成


浏览器构成.png
用户界面    (User Interface)    - 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分

浏览器引擎  (Browser Engine)    - 用来查询及操作渲染引擎的接口

渲染引擎    (Rendering Engine)  - 用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来

网络        (Networking)        - 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作

JS解释器    (JS Interpreter)    - 用来解释执行JS代码

UI后端      (UI Backend)        - 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口

数据存储    (DB Persistence)    - 属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术

1.多进程的浏览器

浏览器是多进程的,有一个主控进程,以及每一个tab页面都会新开一个进程(某些情况下多个tab会合并进程)

进程可能包括主控进程,插件进程,GPU,tab页(浏览器内核)等等

  • Browser进程:浏览器的主进程(负责协调、主控),只有一个
  • 第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建
  • GPU进程:最多一个,用于3D绘制
  • 浏览器渲染进程(内核):默认每个Tab页面一个进程,互不影响,控制页面渲染,脚本执行,事件处理等(有时候会优化,如多个空白tab会合并成一个进程)

2.多线程的浏览器内核
每一个tab页面可以看作是浏览器内核进程,然后这个进程是多线程的,它有几大类子线程:

  • GUI线程
  • JS引擎线程
  • 事件触发线程
  • 定时器线程
  • 网络请求线程

浏览器内核拿到内容后,渲染步骤大致可以分为以下几步:

1. 解析HTML,构建DOM树

2. 解析CSS,生成CSS规则树

3. 合并DOM树和CSS规则,生成render树

4. 布局render树(Layout/reflow),负责各元素尺寸、位置的计算

5. 绘制render树(paint),绘制页面像素信息

1. HTML解析,构建DOM

简单的理解,这一步的流程是这样的:浏览器解析HTML,构建DOM树。 解析HTML到构建出DOM当然过程可以简述如下:

Bytes → characters → tokens → nodes → DOM
image.png
重要的几个步骤
1. Conversion转换:浏览器将获得的HTML内容(Bytes)基于他的编码转换为单个字符

2. Tokenizing分词:浏览器按照HTML规范标准将这些字符转换为不同的标记token。每个token都有自己独特的含义以及规则集

3. Lexing词法分析:分词的结果是得到一堆的token,此时把他们转换为对象,这些对象分别定义他们的属性和规则

4. DOM构建:因为HTML标记定义的就是不同标签之间的关系,这个关系就像是一个树形结构一样
例如:body对象的父节点就是HTML对象,然后段略p对象的父节点就是body对象

2. 解析CSS,生成CSS规则树
同理,CSS规则树的生成也是类似。
Bytes → characters → tokens → nodes → CSSOM

image.png
3. 合并DOM树和CSS规则,生成render树

当DOM树和CSSOM都有了后,就要开始构建渲染树了

一般来说,渲染树和DOM树相对应的,但不是严格意义上的一一对应,因为有一些不可见的DOM元素不会插入到渲染树中,如head这种不可见的标签或者display: none等

image.png
4. 布局render树(Layout/Reflow),负责各元素尺寸、位置的计算

通过渲染树中渲染对象的信息,计算出每一个渲染对象的位置和尺寸。

5. 绘制render树(Paint),绘制页面像素信息

绘制阶段,系统会遍历呈现树,并调用呈现器的“paint”方法,将呈现器的内容显示在屏幕上。


image.png
这张图片中重要的四个步骤
1. 计算CSS样式

2. 构建渲染树

3. 布局,主要定位坐标和大小,是否换行,各种position overflow z-index属性

4. 绘制,将图像绘制出来

Layout,也称为Reflow,即回流。一般意味着元素的内容、结构、位置或尺寸发生了变化,需要重新计算样式和渲染树
Repaint,即重绘。意味着元素发生的改变只是影响了元素的一些外观之类的时候(例如,背景色,边框颜色,文字颜色等),此时只需要应用新样式绘制这个元素就可以了

相关文章

  • 浏览器渲染页面过程

    浏览器渲染页面过程 1. 构建DOM和CSSOM树 浏览器渲染页面前需要构建DOM和CSSOM树 浏览器解析过程大...

  • web前端入门到实战:CSS Houdini实现动态波浪纹

    我们知道,浏览器在渲染页面时,首先会解析页面的 HTML 和 CSS,生成渲染树(rendering tree),...

  • 网页的渲染机制

    网页的渲染机制 参考文章:ScriptJava——了解HTML页面的渲染过程浏览器加载,解析,渲染的过程HTML渲...

  • 网页的渲染机制

    网页的渲染机制 参考文章:ScriptJava——了解HTML页面的渲染过程浏览器加载,解析,渲染的过程HTML渲...

  • JS基础

    浏览器是如何渲染页面和加载页面 解析HTML以重建DOM树(Parsing HTML to construct t...

  • CSS 知识总结

    浏览器如何渲染页面 浏览器解析 1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、...

  • HTML中..内各标签的作用及其与浏览

    1.浏览器相关知识 浏览器内核的作用: 内核就是一个渲染引擎,用来解析代码(html,css,js)并渲染页面,我...

  • 从url到页面展示

    从url到页面展示总体来说分为以下几个过程: DNS解析 TCP连接 服务器处理响应请求 浏览器解析渲染页面 DN...

  • web性能优化 - JS延迟

    概述 (摘抄自 前端大学 微信号)页面被浏览器解析是自上而下,而js 的加载、解析和执行会阻塞页面的渲染过程,如果...

  • 浏览器是如何渲染页面的?

    浏览器页面渲染流程 浏览器从HTTP服务器获取html文档,到呈现页面给用户,会经过以下几个步骤: 1、解析文档构...

网友评论

      本文标题:浏览器解析渲染页面

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