浏览器引擎和渲染引擎有什么区别?

Pum*_*ych 4 browser firefox google-chrome

我发现了一些类似的问题,但它们并未完全回答我的问题,以下是我希望对其他人有帮助的列表:

浏览器引擎,渲染引擎和用户代理之间有什么区别?

布局引擎和JavaScript引擎之间的区别


如此处所述https://www.html5rocks.com/zh-CN/tutorials/internals/howbrowserswork/

浏览器引擎:在UI和呈现引擎之间封送动作。

呈现引擎:负责显示请求的内容。例如,如果请求的内容是HTML,则呈现引擎解析HTML和CSS,然后在屏幕上显示解析的内容。

根据Wikipedia的说法:Web浏览器引擎(有时称为Web布局引擎或Web渲染引擎)...

但是我有点困惑,我仍然无法理解浏览器引擎是什么,“ UI和渲染引擎之间的动作”是什么。

小智 9

我认为答案取决于我们在这里谈论的上下文(哦,伙计,工程师喜欢在不同的上下文中使用不同的术语)。

上下文 1:如果您正在与只了解 Web 基本知识的朋友交谈...

在此上下文中,浏览器引擎是指为浏览器提供动力并负责在屏幕上显示内容的软件。如果您在维基百科中搜索浏览器引擎,它会告诉您流行的浏览器引擎包括 Webkit、Gecko、Trident 等(https://en.wikipedia.org/wiki/Browser_engine)。

这种情况下的渲染引擎是……如果你的朋友知道这个词,他或她应该属于上下文 2 :)

背景 2:如果您正在与一位了解浏览器工作原理及其背后所有疯狂魔法的朋友交谈...

这里的浏览器引擎是指浏览器进程,主要负责管理所有渲染进程和显示 UI。所以在你的问题中,你提到了

浏览器引擎:编组 UI 和渲染引擎之间的操作。

这也是正确的。如果您查看 Chromium 的架构,您会注意到浏览器进程/引擎通过渲染进程协调页面内容。

此处的渲染引擎是指构建 DOM、执行 JavaScript 和布局网页的程序,例如 Webkit、Gecko、Trident。渲染引擎由两个主要部分组成:WebCore的包含核心布局功能和JavaScriptCore的地方JavaScript解释器V8的生活。

您的朋友似乎是专家,并且必须也了解渲染过程,该过程负责构建网页。渲染引擎只是渲染过程中的关键部分。

下图显示了 Chromium 架构(Google Chrome 开源版本)的高级架构概览。如果你想了解更多关于现代浏览器背后的魔力,你可以查看这篇文章:https : //medium.com/@zicodeng/explore-the-magic-behind-google-chrome-c3563dbd2739

在此处输入图片说明


小智 5

我不知道如何用“引擎”来解释。让我在具有多进程体系结构的Chrome浏览器的上下文中使用关键字“ process”进行说明。

浏览器进程:管理渲染器进程的主浏览器进程

渲染器过程:基本上是一个选项卡(铬)

为了防止整个浏览器由于恶意Web内容而崩溃或损害主机系统,对于每个请求,委派了单独的过程来处理Web内容。此单独的过程是Renderer进程(制表符进程),它没有用户特权(即,对OS系统调用的访问受限)。

当一个人请求一个网站时,呈现过程将请求转发给浏览器过程,浏览器过程又使网络对该网站进行调用。Web内容到达后,浏览器进程会将内容发送到渲染器进程。渲染器进程解析HTML,CSS文件,准备DOM,维护JS运行时(V8实例),并将内容作为位图格式发送到浏览器进程以在UI上显示。

浏览器进程将渲染器进程视为黑盒,并期望渲染器进程以某种格式显示Web内容。Web内容到所需格式的这种转换包括布局引擎(过程)是其中的几个子组件。

因此,浏览器进程处理用户特权资源/请求,例如访问文件系统,网络等。在此,沙盒渲染器进程负责将网页转换为浏览器进程可以将其显示在OS本机窗口管理器中的格式。 。

我想知道为什么布局引擎被命名为浏览器引擎。上面提到的浏览器过程与Browser-Engine(布局引擎)不同。我还没有探索布局引擎。

参考资料:https : //seclab.stanford.edu/websec/chromium/chromium-security-architecture.pdf