1. 首页
  2. 开发

浏览器原理问题,有时候一个页面卡死,同域名的页面都崩溃了,为什么呢

通常情况下是一个页面使用一个进程,但是,有一种情况,叫"同一站点(same-site)",具体地讲,我们将“同一站点”定义为根域名(例如,geekbang.org)加上协议 (例如,https:// 或者http://),还包含了该根域名下的所有子域名和不同的端口,比如下面这三个:

都是属于同一站点,因为它们的协议都是https,而根域名也都是 geekbang.org

你也许了解同源策略,但是同一站点和同源策略还是存在一些不同地方,在这里你需要了解它们不是同一件事就行了。

Chrome的默认策略是,每个标签对应一个渲染进程。但是如果从一个页面打开了新页面,而新页面和当前页面属于同一站点时,那么新页面会复用父页面的渲染进程。 官方把这个默认策略叫process-per-site-instance。

直白的讲,就是如果几个页面符合同一站点,那么他们将被分配到一个渲染进程里面去。

所以,这种情况下,一个页面崩溃了,会导致同一站点的页面同时崩溃,因为他们使用了同一个渲染进程。

为什么要让他们跑在一个进程里面呢?

因为在一个渲染进程里面,他们就会共享JS的执行环境,也就是说A页面可以直接在B页面中执行脚本。因为是同一家的站点,所以是有这个需求的。

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册