浏览器-01 基础介绍
2015-12-09 21:54
330 查看
资料
WebKitchromium
内容整理自理解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开源项目的浏览器,一般选择稳定的版本作为基础,同时整合
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进程中实现的;
这些渲染引擎没有访问本地资源的能力,这可以保护渲染引擎被入侵;
相关文章推荐
- java.uti.Date与java.sql.Date 区别
- 做题目时常用的一些C函数
- UVA 10034 - Freckles
- smooth streaming介绍
- VC操作Web Browser的若干技巧
- OC - 第八章(一) 属性
- 证券挂单时间
- 枚举
- 在Navicat premium上创建的SQL Server数据库,实现用PHP连接(即php连接微软MSSQL)
- 加速Android Studio/Gradle构建
- Actor模型浅谈
- rails的Model映射到sqlite3的常用命令
- A Guide For Troubleshooting Workflow Notification Emails - Inbound and Outbound [ID 831982.1]
- mySQL中删除unique key的语法
- android,java代码设置背景色
- 实战c++中的string系列--指定浮点数有效数字并转为string
- 转载 关于接私活
- 开贴纪念
- 实战c++中的string系列--指定浮点数有效数字并转为string
- ModelMap和ModelAndView的作用