We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
随着B/S架构的流行,浏览器变得越来越重要。而一个浏览器往往需要以下这些功能:
User Agent用于表明浏览器身份,因为一个网页在不同的浏览器往往有不同的展示,所以需要根据浏览器身份发送不同的网页内容。浏览器控制台输入 navigator.userAgent 就会得到以下字符串
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
此次测试(使用Chrome)浏览器不仅包含Chrome 还加入了Mozilla ,AppleWebKit , Safari的额外代理,表示浏览器也能兼容其定制内容的页面,这样就能拿到最新功能的页面了。
在浏览器,将网络资源转换为可视化界面的模块就称为浏览器内核(也叫渲染引擎)。
目前主流内核:
渲染引擎主要由以下组成:
渲染引擎在基础模块的基础上主要包含:
渲染过程:
上图大体概括了浏览器渲染的大体过程,这也很好解释了为什么不在DOM里面夹杂JavaScript代码,容易造成线程切换。
webKit的渲染过程大致可分成三大阶段(三阶段后面又细分具体过程):
从URL到构建完DOM树
从DOM树构建完webKit的绘图上下文
从绘图上下文到生成图像
webKit是苹果公司开源的一个项目,被很多浏览器采用为内核,Chrome的Blink就是后面从webKit分支出去发展的。其整体架构如下图:
而webKit2则是在webKit基础上一组支持新架构的接口层。该接口与网页渲染工作代码不在同一个进程,实现了chromium多进程的优点。webKit2接口使用不需要接触背后的多进程机制。
如上图,网页渲染在web进程与webKit2所在的UI进程不是同一进程。
chromium浏览器使用的也是基于webKit的Blink引擎,它相当于chrome的创新版,一些新技术都会先在chromium上实验。在chromium,webKit只是它的一部分。其中content模块和接口是对chromium渲染网页功能的抽象,它在webKit的上层渲染网页,以便可以使用沙箱模型和跨进程GPU等机制。相当于封装内层,提供content接口层让人调用。
多进程模型的优势:
上图是chromium的多进程模型,其中连线代表IPC进程间通信,chromium浏览器主要进程类型有:
多进程模型下网页的渲染:
Renderer创建方式
Chromium允许用户配置 Renderer 进程的创建方式,有以下四种方式:
下图为WebKit由内到外的交互:
首先,两者都是多进程架构的模型,两者的根本目的都要实现UI和渲染的分离,区别在于设计理念:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
WebKit技术内幕《一》浏览器内核
浏览器特性
随着B/S架构的流行,浏览器变得越来越重要。而一个浏览器往往需要以下这些功能:
用户代理(User Agent)
User Agent用于表明浏览器身份,因为一个网页在不同的浏览器往往有不同的展示,所以需要根据浏览器身份发送不同的网页内容。浏览器控制台输入 navigator.userAgent 就会得到以下字符串
此次测试(使用Chrome)浏览器不仅包含Chrome 还加入了Mozilla ,AppleWebKit , Safari的额外代理,表示浏览器也能兼容其定制内容的页面,这样就能拿到最新功能的页面了。
浏览器内核
在浏览器,将网络资源转换为可视化界面的模块就称为浏览器内核(也叫渲染引擎)。
目前主流内核:
渲染引擎主要由以下组成:
渲染引擎在基础模块的基础上主要包含:
渲染过程:
上图大体概括了浏览器渲染的大体过程,这也很好解释了为什么不在DOM里面夹杂JavaScript代码,容易造成线程切换。
webKit的渲染过程大致可分成三大阶段(三阶段后面又细分具体过程):
从URL到构建完DOM树
从DOM树构建完webKit的绘图上下文
从绘图上下文到生成图像
webKit
webKit是苹果公司开源的一个项目,被很多浏览器采用为内核,Chrome的Blink就是后面从webKit分支出去发展的。其整体架构如下图:
而webKit2则是在webKit基础上一组支持新架构的接口层。该接口与网页渲染工作代码不在同一个进程,实现了chromium多进程的优点。webKit2接口使用不需要接触背后的多进程机制。
如上图,网页渲染在web进程与webKit2所在的UI进程不是同一进程。
chromium
chromium浏览器使用的也是基于webKit的Blink引擎,它相当于chrome的创新版,一些新技术都会先在chromium上实验。在chromium,webKit只是它的一部分。其中content模块和接口是对chromium渲染网页功能的抽象,它在webKit的上层渲染网页,以便可以使用沙箱模型和跨进程GPU等机制。相当于封装内层,提供content接口层让人调用。
多进程模型
多进程模型的优势:
上图是chromium的多进程模型,其中连线代表IPC进程间通信,chromium浏览器主要进程类型有:
多进程模型下网页的渲染:
Renderer创建方式
Chromium允许用户配置 Renderer 进程的创建方式,有以下四种方式:
下图为WebKit由内到外的交互:
webKit2与chromium的区别
首先,两者都是多进程架构的模型,两者的根本目的都要实现UI和渲染的分离,区别在于设计理念:
The text was updated successfully, but these errors were encountered: