美文网首页
Chrome 为什么使用多进程,即每个站点用一个进程

Chrome 为什么使用多进程,即每个站点用一个进程

作者: 万事皆成 | 来源:发表于2018-11-09 11:42 被阅读13次

    1. 为什么在浏览器中使用多进程

    页面的html、javascript、css 越来越复杂,经常引起渲染引擎崩溃,如果是单进程,这个浏览器崩溃
    健壮性 避免单个页面崩溃的影响
    响应性 单个页面相应慢不影响其它页面
    安全性 每个页面的渲染引擎在沙盒中,限制漏洞的攻击
    把 Chrome 当做操作系统,每个网页当做一个 APP,会增加内存使用

    2. 每个进程中都运行什么

    Chrome 创建三种类型的进程:浏览器,渲染器和插件程序
    浏览器:只有一个浏览器进程,管理标签,窗口和 “Chrome”,也处理磁盘,网络,显示的交互,但不会去解析和渲染任何网页内容
    渲染器:渲染器进程由浏览器进程创建,每个渲染器进程响应一个网页。包括HTML,JavaScript,CSS,images等复杂的逻辑。使用 WebKit渲染引擎。每个渲染进程都在沙盒中,通过浏览器进程访问磁盘,网络,显示器。如果渲染器有异常,浏览器进程监视器可以杀掉
    插件程序:每种插件由浏览器进程创建一个进程,例如 Flash,Quicktime,Adobe Reader.包含插件程序本身和一些胶水代码来与浏览器和渲染器进行交互

    3. 浏览器什么时候创建进程

    一旦创建了浏览器进程,一般会为每一个网页创建一个渲染器进程,但是如果不同进程间有相互关系可以两个标签共用一个进程。例如,一个标签使用 JavaScript 打开另一个标签,或者在另一个标签打开同一个网址。相关,如果在一个标签中输入不同网址,会重新替换新的渲染器进程。
    兼容性很重要。因此,定义注册网站的域名,该域名下的子域名可以通过 JavaScript 交流,这些网址都在一个渲染器进程
    警告
    开很多进程电脑会变慢,所以渲染器进程限制在20个,如果超个限制,新的标签会重复使用已存在的渲染器进程。因此,可能一个渲染器进程被多个网址使用。
    没有在进程中放置跨站点的帧,也没有为所有类型的跨站点导航交换标签的渲染器进程。目前,只是通过浏览器的“Chrome”为导航交换标签的进程。
    每个插件程序,Chrome会在第一个网页使用时创建插件进程,在所有使用该插件的网页都关闭后销毁插件进程。

    参考:
    Multi-process Architecture
    为什么Chrome比其他浏览器快?

    相关文章

      网友评论

          本文标题:Chrome 为什么使用多进程,即每个站点用一个进程

          本文链接:https://www.haomeiwen.com/subject/pignxqtx.html