浏览器内核
1、浏览器组成
主要由7部分组成:
- 1、User Interface(用户界面):所能看到的界面部分;
- 2、Browser engine(浏览器引擎):在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器中各个部分之间相互通信的核心。
- 3、Networking(网络):实现HTTP、FTP等传输协议,完成网络调用或资源下载的模块;
- 4、Rendering Engine(或layout engineer渲染引擎):负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。
- 5、JavaScript Interpreter(JS 引擎/解释器):解析 Javascript 语言,执行 javascript 语言来实现网页的动态效果,如 V8 引擎、JavaScriptCore。
- 6、Date Persistence(数据持久化存储):cookie、localstorage个性设置、安全证书、缓存等;
- 7、UI Backend(UI 后端):用来绘制基本的浏览器窗口内控件,如输入框、按钮、单选按钮等,根据浏览器不同绘制的视觉效果也不同,但功能都是一样的。
目前chromium浏览器的架构中还会包含各种第三方库:这些库是WebKit运行的基础,包括2D图形库、3D图形库、网络库、存储库、音视频库等;
2、内核
浏览器内核主要分为两部分:渲染引擎(layout engineer 或 Rendering Engine) 和 JS引擎:
- 渲染引擎负责取得网页的内容进行布局计和样式渲染,然后会输出至显示器或打印机
- JS引擎则负责解析和执行JS脚本来实现网页的动态效果和用户交互
- 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
发展史
英文叫做:Rendering Engine,中文翻译很多,排版引擎、解释引擎、渲染引擎,现在流行称为浏览器内核。
- Trident:1997年 IE浏览器;
- KHTML:1998年
- Gecko:2000年 Mozilla浏览器、Firefox浏览器;
- WebKit:2001年 Safari浏览器;
- 基于KDE小组(Linux桌面系统)的 KHTML 引擎,是 KHTML 的一个开源的分支;
- Presto:2003年 Opera浏览器;
- Chromium:2008年 Chrome浏览器。
- 是开源引擎webkit的一个分支,但后来做了很多改进,DNS Prefetch、SPDY、QUIC、Prerender、多进程架构、PPAPI、v8 JavaScript引擎、对HTML5的支持等技术内容都是很好的创新例子。
- 渲染页面较于webkit更好。
- 混合引擎(双核):2010年 国内很多浏览器;
- Blink:2013年 Chrome浏览器;