浏览器多进程架构中,每个标签页真的是独立进程吗? UX美荣 提问于 2026-03-15 19:41:20 阅读 3 前端 最近在看浏览器架构的资料,说现代浏览器用的是多进程模型,但我在任务管理器里观察 Chrome,发现有时候多个标签页共用一个进程,有时候又分开。这到底是什么规则?是不是和同源策略或者 iframe 有关系? 我试过打开不同域名的网站,比如 https://example.com 和 https://test.com,确实分开了进程,但两个相同域名的页面有时却在一个进程里。这是浏览器的优化策略吗?有没有办法强制每个标签页都独立进程? 我来解答 赞 3 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 W″玉楠 Lv1 你观察得很仔细啊!确实是这样,浏览器并不是简单地给每个标签页分配一个独立进程,而是有一套复杂的策略来做这个决策。 基本规则是这样的: 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 加载更多 相关推荐 1 回答 24 浏览 文件拖拽上传时怎么阻止浏览器默认打开文件? 我在做文件拖拽上传功能,但每次把图片拖进页面,浏览器就直接在新标签页打开了那张图,根本没法上传。我试过给容器加了 preventDefault(),但好像没生效。 这是我的 HTML 结构: <... 广云 交互 2026-03-09 16:40:20 2 回答 86 浏览 微前端应用中如何避免重复加载相同版本的公共库? 我在搭建微前端架构时发现,当多个子应用同时依赖同一版本的React, 每个子应用都会独立加载React包,导致控制台报错:React has been called from "react@18.2.... 设计师永景 框架 2026-02-15 09:55:32 2 回答 58 浏览 浏览器通知在新标签页打开后就失效了怎么办? 我在用Notification API做消息提醒时遇到个怪问题,当用户点击通知跳转到新标签页后,后续的通知就完全收不到了。之前按MDN文档写了基础权限请求和显示代码,测试时发现只要打开新标签页,后续调... 子荧~ 交互 2026-02-14 05:18:50 0 回答 2 浏览 Cookie 的 Max-Age 设置为 0 真的能立即删除吗? 我在做登录登出功能时,想用设置 Max-Age=0 来清除 Cookie,但发现浏览器里 Cookie 还在,是不是我理解错了? 后端返回的 Set-Cookie 头是这样写的: Set-Cookie... 令狐爱霖 安全 2026-03-17 12:30:25 1 回答 8 浏览 Electron 应用启动太慢,怎么优化主进程加载速度? 我用 Electron 做了个桌面应用,但每次启动都要等好几秒,感觉卡在主进程加载了。试过把 require 放到 ready 之后,还是没明显改善。 现在主进程里引入了不少模块,比如 const {... 逸龙 Dev 框架 2026-03-16 02:09:18 1 回答 12 浏览 WebP图片在旧版浏览器上不显示怎么办? 我最近把网站的图片全换成WebP格式了,加载快了不少,但在一些老浏览器(比如Safari 13以下、IE)里直接显示空白。试过用picture标签加回退,但好像没生效,是不是写法有问题? 这是我的代码... 英洁🍀 优化 2026-03-14 22:39:17 1 回答 11 浏览 域名分片真的还能提升图片加载速度吗? 我最近在优化一个老项目,听说以前用域名分片能绕过浏览器并发限制,就试着把静态资源拆到 cdn1、cdn2 两个子域下。但实际测下来发现首屏图片加载反而更慢了,是不是现在 HTTP/2 普及之后这招已经... 长孙景岩 优化 2026-03-13 18:34:20 1 回答 20 浏览 为什么我的 HTML 文件改了但浏览器还是加载旧版本? 我改了首页的 HTML 内容,但刷新后浏览器还是显示旧的,强制刷新才生效。是不是缓存没配对? 我试过在 Nginx 里加了 Cache-Control,但好像没起作用。本地开发时用的是 live se... 长孙楠楠 优化 2026-03-12 21:43:20 2 回答 21 浏览 Mocha在移动端浏览器里跑不起来怎么办? 我在用 Mocha 写前端单元测试,桌面浏览器没问题,但放到手机 Safari 或 Chrome 上就报错,控制台显示 ReferenceError: describe is not defined,... ლ志利 移动 2026-03-08 22:34:21 1 回答 18 浏览 为什么浏览器发了 OPTIONS 请求却没发真正的 POST 请求? 我用 fetch 发一个跨域 POST 请求,结果只看到浏览器自动发了个 OPTIONS 预检请求,但后续的 POST 根本没发出去。后端也确认没收到 POST,控制台也没报错,就是卡住了。我试过加 ... シ利君 前端 2026-03-08 20:46:21
基本规则是这样的:
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,不过这个会降低安全性,不建议日常使用。总的来说,浏览器这套进程分配逻辑就是在保证安全隔离的前提下,尽量减少资源消耗。你看到的现象完全正常,不用太纠结~