【问题标题】: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 内部有何不同?

【问题讨论】:

    标签: webview electron webengine


    【解决方案1】:

    这绝不是一个完整的答案,但BrowserView 是由于webview 遇到的各种问题而创建的。

    Here's 创建者的博文:

    • 一种嵌入 Web 应用程序的新方法,错误更少并提高了性能
    • webviews 起初似乎运行良好,但随着时间的推移,我们遇到了越来越多的问题。拖放等基本功能存在错误,总体性能根本无法与 Chrome 相提并论。

    Electron 的 webview documentation 说:

    Electron 的 webview 标签基于 Chromium 的 webview,它正在经历巨大的架构变化。这会影响 webview 的稳定性,包括渲染、导航和事件路由。

    过去有很多webviewbugs,尽管这些特定的似乎已修复。

    Here's 一个关于BrowserView 命运的问题,维护者说:

    <webview> 仍然存在许多错误。还有一些架构问题,例如缓慢的自动调整大小,不太可能很快在 Chromium 中得到解决

    Here 是许多 webview 错误(尽管您当然也可以通过 BrowserView 找到错误)

    另外,你说:

    BrowserView 不使用另一个渲染器进程

    我相信我在某处也看到了对它的引用,但我认为那不是真的。

    当您将BrowserView 导航到页面时,会为其创建一个新的渲染器进程。

    更新:哦,我认为这里的意思是 webview == 1 进程和 BrowserView == 1 进程,但是您在另一个 Renderer 进程内创建 webview,而在主进程内创建 BrowserView。所以webview会有一个额外的过程。

    【讨论】:

      猜你喜欢
      • 2019-10-27
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多