浏览器多进程架构中,每个标签页真的是独立进程吗?

UX美荣 阅读 89

最近在看浏览器架构的资料,说现代浏览器用的是多进程模型,但我在任务管理器里观察 Chrome,发现有时候多个标签页共用一个进程,有时候又分开。这到底是什么规则?是不是和同源策略或者 iframe 有关系?

我试过打开不同域名的网站,比如 https://example.comhttps://test.com,确实分开了进程,但两个相同域名的页面有时却在一个进程里。这是浏览器的优化策略吗?有没有办法强制每个标签页都独立进程?

我来解答 赞 9 收藏
二维码
手机扫码查看
2 条解答
打工人小敏
我之前踩过这个坑,确实挺让人困惑的。现代浏览器采用多进程架构是为了提高稳定性和安全性,但并不是所有标签页都严格独立为一个进程。浏览器会根据一些策略来决定是否将标签页分配到同一个进程。

首先,浏览器会尽量把同源的标签页放在同一个进程中,这样可以共享一些资源,提升性能。这就是为什么你有时候会看到同一域名下的不同页面在同一个进程里。不过,如果你打开了很多标签页,或者某些标签页做了大量的内存操作,浏览器也会把这些高消耗的标签页拆分到不同的进程中,以防止单个进程占用过多资源导致其他标签页卡顿。

至于你提到的强制每个标签页独立进程,其实 Chrome 提供了一个命令行参数 --site-per-process 可以做到这一点。不过这个选项通常只用于调试或特定的安全测试场景,并不推荐在日常使用中开启,因为它会显著增加内存消耗。

总的来说,浏览器的进程分配策略是为了平衡性能和资源使用,有时候看到多个标签页在同一个进程里也是正常的优化表现。
点赞
2026-03-20 20:06
W″玉楠
你观察得很仔细啊!确实是这样,浏览器并不是简单地给每个标签页分配一个独立进程,而是有一套复杂的策略来做这个决策。

基本规则是这样的:

Chrome 默认采用 "process-per-site-instance" 模型。简单说就是:相同站点的页面会尽量共享一个渲染进程,不同站点的页面则分开。这里的"站点"判断是基于 eTLD+1,比如 example.com 和 test.example.com 会被视为同一个站点,所以它们大概率会共用进程。而 example.com 和 test.com 肯定分开。

这确实是一种优化策略。如果每个标签页都独立进程,那内存占用会飙升,而且进程间切换也有开销。浏览器需要在安全性和性能之间找平衡。

和 iframe 的关系:

当页面包含跨域 iframe 时,这个 iframe 会被放到独立的渲染进程中运行。这就是为什么你看到一个页面里有多个进程的原因——主页面一个进程,跨域的 iframe 单独一个进程。

强制每个标签页独立进程的方法:

可以试试 Chrome 的启动参数。右键点击 Chrome 快捷方式,目标路径后面加上 --process-per-tab,这样每个标签页都会是独立进程。不过说实话,日常使用没必要这么做,Chrome 默认的策略已经很合理了。

还有个参数是 --disable-gpu-sandbox,不过这个会降低安全性,不建议日常使用。

总的来说,浏览器这套进程分配逻辑就是在保证安全隔离的前提下,尽量减少资源消耗。你看到的现象完全正常,不用太纠结~
点赞
2026-03-16 14:50