美文网首页Web前端之路
WebKit的网页渲染基本过程

WebKit的网页渲染基本过程

作者: 厂厂哥 | 来源:发表于2017-10-22 21:46 被阅读66次

加载与渲染

    浏览器的主要作用是将用户输入的“URL”转变为可视化图像。按照某文档的分析,这其中包含两个过程,其一是网页加载过程,就是从“URL”到构建DOM树;其二就是网页渲染过程,从DOM生成可视化图像。
    网页渲染有一个特性,通常视图比屏幕可视化面积大。所以在渲染时一般加入滚动条,就用户体验来说,垂直方向的滚动条效果好过水平页面的滚动条效果。

WebKit的渲染过程

    根据数据的流向,可以把过程分为三个阶段,第一个阶段就是从网页的URL到构建完DOM树,第二个阶段是从DOM树到构建完WebKit的绘图上下文,第三个阶段是从绘图上下文生成最终的图像。

第一阶段
从网页URL到DOM树

具体过程如下:

  1. 当用户输入网页URL时,WebKit调用资源加载器加载该URL对应的网页。
  2. 加载器依赖网络建立连接,发送请求并接受答复。
  3. WebKit接受到各种网页或者资源的链接,其中某些资源通过同步或者异步获取。
  4. 网页被交给HTML解释器解释为一系列词语。
  5. 解释器根据词语构建节点(NODE),形成DOM树。
  6. 如果节点是JavaScript代码就调用JavaScript引擎解释并执行。
  7. JavaScript代码可能会修改DOM树的结构。
  8. 如果节点依赖其他资源,则调用资源加载器加载,但他们是异步的,不会阻碍当前DOM树的继续构建;如果是JavaScript资源URL(没有标志异步方式),则需要停止当前DOM树构建,直到JavaScript资源加载完毕并被JavaScript引擎执行后才继续DOM树构建。

    上述过程中,网页会发出“DOMConent”和DOM“onload”事件,分别在DOM树构建完之后,以及DOM树捡完并且网页所以来的资源都加载完之后发生,因为某些资源的加载并不会阻碍DOM树的创建,所以这两个事件多数时候不是同时发生的。

第二阶段
从CSS到DOM树到绘图上下文

具体过程如下:

  1. CSS文件被CSS解释器解释成内部表示结构。
  2. CSS解释器工作完之后,从DOM树上附加解释后的样式信息,这就是RenderObject树。
  3. RenderObject树节点在创建时,WebKit会根据网页的层次结构创建RenderLayer树,同时创建一个虚拟上下文。

    上述过程中,RenderObject树的建立并不代表DOM树会被销毁,直到网页被销毁,这四个内部结构将一直存在。

第三阶段
从绘图上下文生成最终的图像

具体过程如下:

  1. 绘图上下文是一个与平台无关的抽象类,它将每个绘图操作桥街道不同的具体实现类,也就是绘图具体实现类。
  2. 绘图实现类也可能相当容易的实现,也有可能相当复杂的实现。在Chromium中,它需要合成器来实现复杂的多进程和GPU加速机制。
  3. 绘图实现类将2D图形库和3D图形库绘制结果保存下来,交给浏览器来同浏览器界面一起显示。

    上述过程实际上可能不会那么简单,现在浏览器为了高效性和安全性,可能会引入复杂的机制。而且绘图不像以前只有单纯的软件渲染,还有现在的GPU硬件渲染、混合渲染模型等方式。

总结

    上面介绍的是一个完整的渲染过程。现代网页很多是动态网页,渲染完成之后,由于网站动画和或者与用户的交互。浏览器会一直不断重复渲染过程。

相关文章

  • WebKit的网页渲染基本过程

    加载与渲染 浏览器的主要作用是将用户输入的“URL”转变为可视化图像。按照某文档的分析,这其中包含两个过程,其一是...

  • Webkit的网页渲染过程

    Webkit的网页渲染过程 1.加载和渲染 浏览器的主要作用就是讲用户输入的'URL'转变成可视化的图片.按照某些...

  • webpack-优化阻塞的css

    原理: 首先我们了解一下页面的基本渲染流程(参考): webkit渲染过程: Gecko渲染过程: 那么,为什么要...

  • 网页渲染流程简述

    1.网页的渲染过程 webkit渲染html+css1-1.获取dom分割层1-2.计算样式1-3.重排 放置d...

  • html网页渲染的基本过程

    最近面试中经常会被问到html页面的渲染过程,之前一直只是在用,没有仔细的研究过其中的过程,今天查阅了一些资料,并...

  • webpack减少阻塞渲染的css(别名首屏阻塞css优化)

    原理: 首先我们了解一下页面的基本渲染流程(参考):webkit渲染过程:[图片上传失败...(image-93b...

  • webkit之网页渲染详解

    待完成

  • html网页的的加载和渲染过程(webkit内核)

    一个网址从url到页面图像一般分为两个过程: 1. 网页加载过程:从URL到构建DOM树 2. 网页渲染过程:从D...

  • WebKit架构(二)

    WebKit资源加载机制 资源 网络和资源加载是网页的加载和渲染过程中的第一步,也是必不可少的一步。网页本身就是一...

  • WebView介绍

    WebView是一个可以显示网页的控件,他的网页渲染引擎和safari、Chrome一样都是webkit。 使用W...

网友评论

    本文标题:WebKit的网页渲染基本过程

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