window.open打开的页面是否与父页面共享浏览器资源?如何实现内存独立?
独立内存新页面打开解决方案
默认通过window.open打开的同源页面会和父页面归属同一个渲染进程,共享内存堆,因此不会拆分内存占用,甚至因为新窗口还要额外承载UI资源,总占用会更高。可以通过以下方法实现新页面独立占用内存:
- 新增
noopener、noreferrer打开参数
这是成本最低的实现方式,直接在打开逻辑中补充参数即可:
a标签写法:<a href="你的新页面地址" target="_blank" rel="noopener noreferrer">打开新窗口</a>
JS调用写法:window.open('你的新页面地址', '_blank', 'noopener,noreferrer')
补充参数后,同源新窗口会被浏览器分配独立的渲染进程,和父页面内存完全隔离,不会共享上下文。 - 跨域部署新页面
若上述参数在老旧浏览器中不生效,可以将新页面部署到和主页面不同的域名/二级域名下,浏览器会自动给跨域页面分配独立进程,天然实现内存隔离。 - 开启站点隔离配置(仅适用用户端可控的内部场景)
如果是内部工具类场景,可以让使用者调整浏览器配置,比如Chrome访问chrome://flags/开启「Site Isolation」站点隔离功能,强制每个站点都用独立进程运行,完全隔离内存。
内存占用对比参考:
内容的提问来源于stack exchange,提问作者fallingsong
相关产品推荐
相关产品推荐


