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

时间:2017-09-12 06:28:38

标签: google-chrome firefox browser

我发现了一些类似的问题,但他们并没有完全回应我所拥有的问题,这里是我希望能帮助其他人的清单:

What's the difference between a browser engine, a rendering engine and a user agent?

Difference between layout engine and javascript engine

如此处https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

所述

浏览器引擎:编组用户界面和渲染引擎之间的操作。

渲染引擎负责显示请求的内容。例如,如果请求的内容是HTML,则呈现引擎会解析HTML和CSS,并在屏幕上显示已解析的内容。

根据维基百科: Web浏览器引擎(有时称为Web布局引擎或Web呈现引擎)......

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

2 个答案:

答案 0 :(得分:3)

我不知道如何解释"引擎"。 让我解释一下使用关键字" process"在具有多进程架构的chrome浏览器环境中。

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

渲染器流程:基本上是一个标签(在铬中)

为了防止整个浏览器因恶意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

答案 1 :(得分:1)

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

上下文1:如果您正在与只了解网络基本知识的朋友聊天...

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

在这种情况下,呈现引擎将是...如果您的朋友知道这个单词,他或她应该属于上下文2:)

上下文2:如果您正在与一个知道浏览器如何工作以及背后所有疯狂的魔力的朋友聊天……

在此上下文中,浏览器引擎指的是浏览器进程,它主要负责管理所有渲染过程和显示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