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

7
我发现了一些类似的问题,但它们并没有完全回答我的问题,以下是我希望能帮助其他人的列表:
- 浏览器引擎、渲染引擎和用户代理之间有什么区别? - 布局引擎和JavaScript引擎之间的区别
在这里解释了 https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/ 浏览器引擎: 在UI和渲染引擎之间调度操作。 渲染引擎: 负责显示所请求的内容。例如,如果请求的内容是HTML,则渲染引擎会解析HTML和CSS,并在屏幕上显示解析后的内容。
根据维基百科: Web浏览器引擎(有时称为Web布局引擎或Web渲染引擎)......
但我有点困惑,我仍然不明白浏览器引擎是什么,“UI和渲染引擎之间的操作”是什么。

你有没有阅读过高级架构WebKit架构 - overexchange
2个回答

12

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

上下文1:如果你在和一个只知道基本网络知识的朋友交谈...

在这种情况下,浏览器引擎是指驱动你的浏览器并负责在屏幕上显示内容的软件。如果你在维基百科上搜索浏览器引擎,它会告诉你流行的浏览器引擎包括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

enter image description here


感谢清晰的解释!如果渲染进程拥有V8/JS解释器,那么当加载的JS有一个NW请求时,最终是谁负责网络通信呢?它会通过IPC传输到浏览器进程吗? - undefined

10
我不知道如何用"Engine"来解释,让我用Chromium浏览器的多进程架构中的"process"关键字来解释。
浏览器进程:主要管理渲染器进程的浏览器进程。
渲染器进程:基本上是一个选项卡(在Chromium中)。
为了防止恶意网页内容导致整个浏览器崩溃或危及主机系统,每个请求都有一个单独的进程来处理网页内容。这个单独的进程就是渲染器进程(选项卡进程),它没有用户权限(即对操作系统系统调用的访问受限)。
当请求网站时,渲染进程将请求转发给浏览器进程,后者再为网站进行网络调用。在接收到网页内容之后,浏览器进程会将内容发送到渲染器进程。
渲染器进程解析HTML、CSS文件,准备DOM,维护JS运行时(V8实例),并以位图格式将内容发送给浏览器进程以在UI上显示。
浏览器进程将渲染器进程视为黑盒,并期望从渲染器进程以特定格式获得网页内容。将网页内容转换为所需格式包括几个子组件,其中布局引擎(进程)是其中之一。
所以,浏览器进程处理用户特权资源/请求,例如访问文件系统、网络等,而沙盒化的渲染器进程负责将网页转换为浏览器进程可以在操作系统本地窗口管理器中显示的格式。
我想知道为什么布局引擎被命名为浏览器引擎。上述提到的浏览器进程与浏览器引擎(布局引擎)不同。我还没有探索过布局引擎。
参考文献: https://seclab.stanford.edu/websec/chromium/chromium-security-architecture.pdf

1
一个很好的回答。我认为只要更明确地说明它为什么有这个软件架构,就可以改进它。你描述的架构的想法是安全性和沙盒化未受信任的Web内容的呈现。因此,虽然许多替代架构是可能的,但你概述的架构是已经发展起来以加强Web浏览器抵御基于内容的攻击的架构。你的回答暗示了这一点,但学生们可能不知道旧浏览器的历史安全问题。因此,指出那些简单架构的历史问题可能会有所帮助。 - simbo1905

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接