您的位置:首页 > 其它

浏览器-01 基础介绍

2015-12-09 21:54 330 查看

资料

WebKit

chromium

内容整理自理解WebKit和Chromium

浏览器工作原理

WebKit概述

发展

开源的项目,专注于网页内容的展示,开发出一流的网页渲染引擎;包括:

WebCore
,包含了对
HTML,CSS
W3C
规范的实现;

WebView
,为各个平台的移植并提供相对应的
Web
接口来操作和显示网页;

WebKit2
: 新的
API
层,主要的变化在于将网页的渲染和接口层置于单独的进程,通过
IPC
来通讯;

*当网页渲染出现问题时,不会阻碍接口的调用者进程,在很大程度上帮助解决浏览器或调用者的稳定性和安全性问题;

Blink
:即从
WebKi
直接复制出来,整理并移除与chromium
无关的
接口;

*和
WebKit
差别越来越大;

iframes
内容创建单独的沙箱进程来渲染;

DOM
移入
JavaScript
中,使JS可以更快的访问
DOM
;

Chromium
: 建立在
WebKit/Blink
之上的浏览器开源项目(浏览器);

采用,如跨进程模型,沙箱模型等新技术;同时支持,如
WebGL
,
Canvas2D
,
CSS3
以及其他
HTML5
规范;

Chrome
:基于
chromium
开源项目的浏览器,一般选择稳定的版本作为基础,同时整合
Google
的很多服务;

WebKit
功能模块

HTML
解析:负责
HTML
语言的解析;

CSS
解析:负责
CSS
的解析工作;

图片解码:支持不同编码格式的图片;

JS
引擎:
JavaScript
的解析引擎,缺省的是
JavaScriptCore
;但是目前
V8
更流行;

正则表达式

布局:负责
layout
的计算和更新工作;

文档对象模型:
负责
DOM`树及其相应的接口;

渲染:与渲染相关的基础设施,如渲染树,渲染层次树等;

SVG
支持;

XML
语言解析;

XSLT
语言的解析;

URL
解析器:
URL
规范的解析;

Unicode
编解码器:各种编码解码工作;

移植:
WebKit
中比较大的一部分,不同平台因的移植有不同的实现;

Chromium概述

Chromium
功能模块

Cookie
管理器:
cookie
生命周期的管理;

历史管理器:历史记录的管理;

密码管理器:网页中密码登录信息管理;

窗口管理:多个
Tab
的管理和切换;

地址栏:地址栏功能,智能地址填充与书签的协同工作;

安全浏览黑名单管理:安全浏览机制

网络栈:与网络传输相关的工作

SSL/TLS
:网络传输安全;

磁盘缓存:磁盘缓存页面及其替换策略等生命周期的管理;

下载管理器:管理下载相关;

粘帖板:
clipboard
的功能;

书签管理:书签的组织和管理;

URL
解析器:同
WebKit
;

Unicode
编解码器:同
WebKit
;

沙箱模型,
NaCl
,扩展机制,硬件加速架构等等;

Chromium
界面

分成两个主要部分:网页内容和外边的修饰控件;

chrome://chrome-urls/;

Chromium
多进程模型

很大程度上也是
WebKit2
产生的原因;

概述

多进程架构的好处:

避免单个页面的不响应或奔溃影响整个浏览器的稳定性;

第三方插件奔溃时候不会影响页面或浏览器的稳定性;

方便安全模型的实施; //沙箱模型是基于多进程架构的

进程模型:方框代表进程,连接线代表
IPC
进程间通信;



进程类型

Browser
进程:浏览器的主进程,负责界面的显示,页面的管理,其他各种进程的管理;

Render
进程:页面的渲染进程,
WebKit
的工作主要在这个进程中完成;

NPAPI
插件进程:每种类型的插件只会有一个进程,每个插件进程可以被多个
Render
进程共享;

GPU
进程:最多只有一个,当且仅当
GPU
硬件加速打开的时候才会被创建,主要用于对
3D
加速调用的实现;

Pepper
插件进程:同
NPAPI
插件进程,不同的是为
Pepper
插件而创建的进程;

进程特征

browser
进程和页面是分开的,这保证了页面的奔溃不会导致浏览器主界面的奔溃;

每个页面是独立的进程,这保证了页面之间相互不影响;

插件进程独立,插件的问题不会影响浏览器主界面和页面;

进程模型的类型

Process-per-site-instance
: 对同一个域的实例都会创建独立的进程;好处是每个页面互不 影响,坏处自然是资源的巨大浪费;

Process-per-site
: 不同一个域会创建独立的进程,同一域的不同实例共享同一个进程;好处是对于不同的域可以共享, 相对较小的内存消耗,坏处是可能会有特别大的
Renderer
进程;

Process-per-tab
: 为每个标签页创建一个独立的进程,这也是
chrome/chromium
的缺省行为;

Single process
: 不为页面创建任何独立的进程,所有渲染工作都在
browser
进程中;实验性质,不推荐使用;

沙箱模型

在页面的多进程模型中,页面的渲染是运行在沙箱模型中的
Render
进程中实现的;

这些渲染引擎没有访问本地资源的能力,这可以保护渲染引擎被入侵;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: