Electron:为啥 BrowserView 的性能比 Webview 好?
Posted
技术标签:
【中文标题】Electron:为啥 BrowserView 的性能比 Webview 好?【英文标题】:Electron: Why does BrowserView has better performance then Webview?Electron:为什么 BrowserView 的性能比 Webview 好? 【发布时间】:2021-06-04 05:02:16 【问题描述】:我已经阅读过有关 Webview 和 BrowserView 的信息,它们似乎在做同样的事情:将额外的 Web 内容嵌入到应用程序中。我知道 Electron 的 webview 标签基于 Chromium 的 webview,并且这个 API 是已弃用的 Chrome Apps 平台的一部分。甚至 Electron 也建议不要使用 Webview 并考虑替代方案(iframe、BrowserView)。
但是是什么改变让 BrowserView 更胜一筹呢?我知道与 Webview 不同,BrowserView 不使用另一个渲染器进程,这就是为什么 BrowserView 具有更好的性能?其他指标是什么? BrowserView 与 Webview 内部有何不同?
【问题讨论】:
【参考方案1】:这绝不是一个完整的答案,但BrowserView
是由于webview
遇到的各种问题而创建的。
Here's 创建者的博文:
一种嵌入 Web 应用程序的新方法,错误更少并提高了性能 webviews 起初似乎运行良好,但随着时间的推移,我们遇到了越来越多的问题。拖放等基本功能存在错误,总体性能根本无法与 Chrome 相提并论。
Electron 的 webview
documentation 说:
Electron 的 webview 标签基于 Chromium 的 webview,它正在经历巨大的架构变化。这会影响 webview 的稳定性,包括渲染、导航和事件路由。
过去有很多webview
bugs,尽管这些特定的似乎已修复。
Here's 一个关于BrowserView
命运的问题,维护者说:
<webview>
仍然存在许多错误。还有一些架构问题,例如缓慢的自动调整大小,不太可能很快在 Chromium 中得到解决
Here 是许多 webview
错误(尽管您当然也可以通过 BrowserView
找到错误)
另外,你说:
BrowserView 不使用另一个渲染器进程
我相信我在某处也看到了对它的引用,但我认为那不是真的。
当您将BrowserView
导航到页面时,会为其创建一个新的渲染器进程。
更新:哦,我认为这里的意思是 webview == 1 进程和 BrowserView == 1 进程,但是您在另一个 Renderer 进程内创建 webview,而在主进程内创建 BrowserView。所以webview会有一个额外的过程。
【讨论】:
以上是关于Electron:为啥 BrowserView 的性能比 Webview 好?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Electron 页面不直接加载 JQuery? [复制]
为啥我的 ipcMain 没有发送到 Electron 中的 ipcRenderer?