Chromium进程模型

http://dev.chromium.org/developers/design-documents/process-models

SiteInstance

SiteInstance表示着一组之间有脚本联系的网页,从第一个网页开始,通过点击它页面上的超链接或者脚本代码打开的网页都属于同一个SiteInstance。比如用js window.open打开的网页或者target链接打开的网页。即使弹出了新的窗口或者打开了新的tab,或者打开的页面网址域名和协议也不一样,它们还是属于同一个SiteInstance。SiteInstance有个site名,它是根据网页URL的协议和域名组成的,不区分端口。

BrowsingInstance

BrowsingInstance是为了实现html5中的一个概念,直观的理解就是一个浏览器tab网页和它能够前进后退到的网页都属于同一个BrowsingInstance。一个BrowsingInstance里面可以包含一个或者多个SiteInstance,而一个SiteInstance只能存在于一个BrowsingInstance里面。存在于同一个BrowsingInstance里面的SiteInstance的site名必须不同。

进程模型

Chromium支持4种进程模型,每种进程模型采用不同的策略决定网页放到哪个Renderer进程里。Chromium默认的采用Process-per-site-instance方式,不过我们可以在浏览器启动时传递一个命令行开关来指定浏览器的进程模型。

4种进程模型是基于SiteInstance和BrowsingInstance两个因素来考虑的,如下表:

BrowsingInstance SiteInstance
Process-per-site-instance 考虑 考虑
Process-per-site 不考虑 考虑
Process-per-tab 考虑 不考虑
Single process 不考虑 不考虑

Process-per-site-instance

这种进程模型会为每一个SiteInstance创建一个Renderer进程。

Process-per-site

这种进程模型会把不同BrowsingInstance里面同名的SiteInstance放到同一个Renderer进程里。

Process-per-tab

这种进程模型会为每一个BrowsingInstance创建一个Renderer进程。

Single process

这种进程模型会把Browser端和Renderer端都放到同一个进程里。

发表评论

电子邮件地址不会被公开。 必填项已用*标注