WebKit是一个开源的浏览器引擎,其详细结构主要包含以下部分:
1. JavaScriptCore (JSC)
它是WebKit的JavaScript引擎,负责解析和执行JavaScript。JSC有多个执行层级,包括解释器、基线即时编译器(Baseline JIT)、数据流图即时编译器(DFG JIT)以及快于光速即时编译器(FTL JIT),以实现不同程度的代码优化和执行效率。
2. WebCore
这是WebKit中最大的部分,负责实现大部分Web API、HTML、XML和CSS的解析,以及HTML、SVG和MathML元素及CSS的实现。它使用文档对象模型(DOM)和渲染树来处理网页内容的结构和视觉表现。
3.PAL (平台抽象层) 和 platform
这两部分允许WebCore能够跨不同平台运行,尽量保持与平台无关。为了实现这一点,部分代码正在从platform迁移到PAL。
4. WebKitLegacy(也称为WebKit1)
这个层次提供了WebCore与单一进程操作系统的接口,如在macOS上的WebView和在iOS上的UIWebView。
5. WebKit (也称为WebKit2)
它实现了WebKit的多进程架构,通过UI进程、Web内容进程和网络进程的分离,提高了浏览器的响应性和安全性。其中UI进程运行应用程序逻辑,Web内容进程隔离网页内容,网络进程负责处理网络访问和管理存储。
6. bmalloc
WebKit自己的内存分配器,它提供了一种重要的安全功能,称为IsoHeap,通过将每种类型的对象隔离在自己的页面中,防止类型混淆攻击。
7. WTF(Web Template Framework)
这是一个模板库,不仅被用来构建其它的WebKit代码,而且常常代替C++标准库中的类似类模板。它包含了常见的容器类和智能指针类型,例如Vector、HashMap、HashSet以及Ref、RefPtr和WeakPtr等。
8. WebInspector / WebDriver
这是WebKit的开发者工具和自动化工具,用于网页开发者调试和测试。
9. 多进程架构
WebKit2使用多进程架构来增强安全性和应用的响应性。它将每个网页加载在自己的WebContent进程中,所有的WebContent进程可以共享一个浏览会话,该会话存在于共享的网络进程中。网络进程不仅处理所有网络访问,还负责管理磁盘缓存和允许网站存储结构化数据的Web API【8†source】【9†source】【10†source】。
以上是WebKit结构的概要介绍,每一部分都对整个Web浏览体验有着重要的影响。