浏览器工作原理

浏览器可以说是应用最为广泛的应用,chrome、fireforks、safari等开源浏览器占据了浏览器市场的半壁江山。

浏览器的主要功能是将用户选择得web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF、image及其他格式。用户用URI(Uniform Resource Identifier 统一资源标识符)来指定所请求资源的位置。

浏览器的主要组件包括:

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

2.浏览器引擎- 用来查询及操作渲染引擎的接口

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

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

5.UI后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口6.JS解释器- 用来解释执行JS代码

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

其具体图示如下:

  • 渲染引擎(The rendering engine)
  • 渲染引擎的职责就是渲染,即在浏览器窗口中显示所请求的内容。
  • 默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF阅读器插件,可以显示PDF格式,Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Gecko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。Webkit是一款开源渲染引擎,它本来是为linux平台研发的,后来由Apple移植到Mac及Windows上

  • 主流程(The main flow)
  • 渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成。
    下面是渲染引擎在取得内容之后的基本流程:
    解析html以构建dom树->构建render树->布局render树->绘制render树


    上图:渲染引擎基本流程
  • 渲染引擎开始解析html,并将标签转化为内容树中的dom节点。接着,它解析外部CSS文件及style标签中的样式信息。这些样式信息以及html中的可见性指令将被用来构建另一棵树——render树。Render树由一些包含有颜色和大小等属性的矩形组成,它们将被按照正确的顺序显示到屏幕上。Render树构建好了之后,将会执行布局过程,它将确定每个节点在屏幕上的确切坐标。再下一步就是绘制,即遍历render树,并使用UI后端层绘制每个节点。
    值得注意的是,这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。

原文地址:https://www.cnblogs.com/riskyer/p/3297062.html