浏览器内核

2020-07-21  本文已影响0人  komallqh

浏览器内核分为两部分:一是渲染引擎,其主要负责结构与样式,即网页的内容(HTML,XML,图像等),以及计算网页显示方式,然后输出到打印机;而JS引擎主要是负责解析JavaScript,实现页面交互效果;一个负责搭建静态结构,一个用来展现动态效果;后来js引擎越来越独立,浏览器内核便更加倾向于指渲染引擎。

目前常见浏览器及其内核

浏览器渲染引擎的工作原理

先了解一下浏览器的主要组成部分:用户界面,浏览器引擎,渲染引擎,网络请求模块,JS引擎,用户界面后端,数据层。


image.png

各部分的作用为: 用户界面:包括如地址栏,书签栏等内容构成了浏览器的用户界面,用来实现与用户之间的交互 浏览器引擎:用于在渲染引擎和用户界面之间传递命令 渲染引擎:当获取到请求的页面资源后,浏览器先解析HTML文档构建“结构树”,然后解析CSS文件,为“结构树”添加样式形成”渲染树“,接下来就是布局过程,为“渲染树”分配屏幕的位置坐标,最后进入绘制阶段,利用UI后端绘制出“渲染树”的每一个节点;另外,为了更好用户体验,浏览器引擎不会等到所有html解析完成后再去构建和布局render树。它是完成解析完一部分内容就显示一部分内容,于此同时还可能通过网络下载相关内容


image.png

网络请求模块:实现网络请求以及数据接收 JS引擎:负责解析JS代码 UI后端:负责绘制基本的部件,在底层与操作系统进行交互 数据存储:负责存储数据

浏览器页面渲染过程(及尽量避免重绘回流的操作)

  1. 用户输入网址(假设是HTML页面,第一次访问,无缓存) 浏览器向服务器发出HTTP请求,服务器返回HTML文件(善用缓存,减少HTTP请求,减轻服务器压力)

  2. 浏览器载入HTML代码,获取CSS文件(CSS文件合并,减少HTTP请求)

  3. 载入<body>,开始渲染页面(CSS文件放在最上面,避免重复渲染 )

  4. 浏览器发现一个<img>,向服务器发出请求,此时浏览器不会等到图片下载完,而是继续渲染后面的代码(图片文件合并,减少HTTP请求)

  5. 服务器返回图片文件,由于图片面积,影响界面中其他元素的排版,此时,浏览器需要重新渲染这部分代码(最好图片都设置尺寸,避免重新渲染)

  6. 浏览器发现一个包含js代码的<script>标签,会立即运行该js代码(script最好放在页面最下面)

  7. js执行命令:隐藏掉代码中某个div元素,此时浏览器不得不重新渲染这部分代码(页面初始化样式不要使用js控制)

  8. 如果某时刻,用户通过点击某个按钮修个这个页面样式(如换肤),请求新的CSS文件,此时发生回流,重新渲染页面

关于reflow和repaint

reflow:某个样式发生改变影响页面的布局,发生回流;reflow几乎无法避免,如树目录的折叠展开效果都会引起reflow repaint:改变某个元素的背景色,文字或边框颜色等不影响布局的属性,成为repaint; reflow的成本比repaint高;

引起reflow的情况(标准流内的元素发生形态上的改变)

  1. 改变窗囗大小

  2. 改变文字大小

  3. 内容的改变,如用户在输入框中敲字

  4. 添加/删除样式表

  5. 激活伪类,如:hover (IE里是一个兄弟结点的伪类被激活)

  6. 操作class属性

  7. 脚本操作DOM

  8. 计算offsetWidth和offsetHeight

  9. 设置style属性

reflow是不可避免的,只能将reflow对性能的影响减到最小。

从输入url到加载完成过程

上一篇 下一篇

猜你喜欢

热点阅读