Chrome 浏览器,多标签页共用一个进程场景

本文探讨了Chrome浏览器中,通过不同方式打开新标签页时,如何导致多标签页共用一个进程,从而引起页面卡顿的问题。通过分析`target="_blank"`的a标签、`window.open()`方法和iframe内嵌页面的场景,揭示了同源策略和进程分配的关系,并提出了解决卡顿的方法。在某些情况下,设置opener属性为null并不能确保新标签页独立进程,而iframe内嵌非同源页面会启动新进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

  • 问题表现:某页面 B 发生规律性卡顿。
  • 排查现象:
    1. 新起一个浏览器标签页,独立访问页面 B,无卡顿现象;
    2. 从页面 A 打开新页面 B,B 发生规律性卡顿;
    3. 关闭页面 A ,页面 B 无卡顿现象;
    4. 保持页面 A 开启,手动新增一个浏览器标签页,输入页面 B 的 url,B 无卡顿现象;
  • 结论:只有从页面 A 打开的页面 B,才会发生定期卡顿现象。

调试过程及原因

打开 chrome 浏览器的任务管理器。
chrome 任务管理器

发现从页面 A 打开页面 B 时(这里用了window.open()),页面 A 与页面 B 共用了一个进程。因页面 A 会定时执行大量页面渲染动作,CPU 陡增,导致页面 B 发生规律性卡顿。

注:下图仅为多标签页共用同一进程的示例图,并非真实的问题网站。
多个tab共用一个进程

沉淀

一般情况下,每打开一个浏览器标签页,会新开一个独立进程,即使两个标签页打开的是同一个页面。如下图所示。
一个独立tab分配一个独立进程
但,如果是通过一个标签页打开另一个标签页时,Chrome 浏览器,可能会将两个标签页共用一个进程。下面具体展开来说这种情况。

在新窗口中打开页面链接的三种方式:

这部分不配图了,请大家打开自己的 Chrome 任务管理器,随时观察吧。

1. 指定了 target="_blank" 的 a 标签

// 假设当前页面链接为:https://www.baidu.com/
// 通过两个 a 标签,分别打开两个页面,如下:
<a href="https://www.ba
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值