How Broswers Work<二>渲染引擎(1)
2016-03-01 10:41
387 查看
渲染引擎的工作当然是渲染,也就是说将用户请求的内容以特定的方式显示在浏览器显示窗口中。
浏览器默认会现实的格式是HTML,XML 文档和图片,他也能通过插件(浏览器的扩展)显示其他类型的内容,比如使用PDF显示插件可使浏览器显示PDF。我们将用专门的章节讲解插件,在本章节中,我们将重点讲解CSS是如何影响HTML以及图片的显示的。
渲染引擎
下面讲解涉及的浏览器-Firefox,Chrome和Safari 都内建两个渲染引擎。Firefox用的是自家的Gecko,Safari和Chrome用的是Webkit.
关于浏览器引擎的介绍在第一篇翻译中有详细的,想了解更多,参照第一篇
主要的过程
首先渲染引擎要从来自网络层的文档中获取内容,通常以8K分块的方式完成,之后的基本流程如下:
Figure 2:Rendering engine basic flow.
渲染引擎将开始解析HTML文档,将它标签转化成DOM节点并形成一棵DOM树也称“内容树”,随后解析数据的样式,包括文档外的css文件以及在文档内的元素的样式,这些样式信息也将建立一棵树-渲染树(the render tree).
渲染树有一些包含可见属性例如颜色和大小的矩阵组成,他们将以正确的顺序显示到屏幕。
建完渲染树后,渲染引擎将开始布局。这意味着将给每个节点准确的定位。在此之后就开始绘画,即将所有准备好的东西在浏览器中绘制出来-渲染引擎的工作完成啦,接下来就是UI Backend层的事啦。
理解这是一个平缓的过程很重要,就更好的用户体验来看,渲染引擎应该尽可能快的将内容绘制到屏幕上,它不会等待在HTML解析完成到渲染树建立完成的时间,当还有部分内容还在从网络层到达渲染引擎层的时候,内容的一部分将被解析并被显示到屏幕。
主要流程的例子
Figure 3: Webkit main flow
Figure 4: Mozilla’s Gecko rendering engine main flow
通过上面的图3与图4可以看出:尽管webkit和Gecko使用的术语稍有不同,他们的主要流程基本相同。Gecko称由格式化元素组成的树为frame树,每个元素都是一个frame,webkit则使用render树这个名词来命名由渲染对象组成的树。Webkit中元素的定位称为布局,而Gecko中称为回流。Webkit称利用dom节点及样式信息去构建render树的过程为attachment,Gecko在html和dom树之间附加了一层,这层称为内容接收器(content sink),相当制造dom元素的工厂。下面将讨论流程中的各个阶段。
浏览器默认会现实的格式是HTML,XML 文档和图片,他也能通过插件(浏览器的扩展)显示其他类型的内容,比如使用PDF显示插件可使浏览器显示PDF。我们将用专门的章节讲解插件,在本章节中,我们将重点讲解CSS是如何影响HTML以及图片的显示的。
渲染引擎
下面讲解涉及的浏览器-Firefox,Chrome和Safari 都内建两个渲染引擎。Firefox用的是自家的Gecko,Safari和Chrome用的是Webkit.
关于浏览器引擎的介绍在第一篇翻译中有详细的,想了解更多,参照第一篇
主要的过程
首先渲染引擎要从来自网络层的文档中获取内容,通常以8K分块的方式完成,之后的基本流程如下:
Figure 2:Rendering engine basic flow.
渲染引擎将开始解析HTML文档,将它标签转化成DOM节点并形成一棵DOM树也称“内容树”,随后解析数据的样式,包括文档外的css文件以及在文档内的元素的样式,这些样式信息也将建立一棵树-渲染树(the render tree).
渲染树有一些包含可见属性例如颜色和大小的矩阵组成,他们将以正确的顺序显示到屏幕。
建完渲染树后,渲染引擎将开始布局。这意味着将给每个节点准确的定位。在此之后就开始绘画,即将所有准备好的东西在浏览器中绘制出来-渲染引擎的工作完成啦,接下来就是UI Backend层的事啦。
理解这是一个平缓的过程很重要,就更好的用户体验来看,渲染引擎应该尽可能快的将内容绘制到屏幕上,它不会等待在HTML解析完成到渲染树建立完成的时间,当还有部分内容还在从网络层到达渲染引擎层的时候,内容的一部分将被解析并被显示到屏幕。
主要流程的例子
Figure 3: Webkit main flow
Figure 4: Mozilla’s Gecko rendering engine main flow
通过上面的图3与图4可以看出:尽管webkit和Gecko使用的术语稍有不同,他们的主要流程基本相同。Gecko称由格式化元素组成的树为frame树,每个元素都是一个frame,webkit则使用render树这个名词来命名由渲染对象组成的树。Webkit中元素的定位称为布局,而Gecko中称为回流。Webkit称利用dom节点及样式信息去构建render树的过程为attachment,Gecko在html和dom树之间附加了一层,这层称为内容接收器(content sink),相当制造dom元素的工厂。下面将讨论流程中的各个阶段。
相关文章推荐
- Android Manifest 用法
- Android学习笔记(二九):嵌入浏览器
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Web布局连载——两栏固定布局(五)
- 广告行业抱怨 Safari 的防追踪技术 ITP 太有效,严重影响收入
- [div+css]晒晒最新制作专题推广页模板
- 把Chrome OS安装在VMWare下及Chrome OS的关键特性和一些截图
- 在Windows 8.1的IE 11中屏蔽双击放大功能
- 小白观察:微软释放出其基于 Chromium 的 Edge 浏览器
- [css] line-height 百分比单位和数值单位的区别
- Apple官网研究之使用Justify布局导航
- 设计更快的网页(三):字体和 CSS 调整
- 纯CSS制作的新闻网站中的文章列表
- 10条影响CSS渲染速度的写法与使用建议第1/3页
- 通过Mootools 1.2来操纵HTML DOM元素
- BS项目中的CSS架构_仅加载自己需要的CSS