zoukankan      html  css  js  c++  java
  • 关于浏览器内核的一些概念


    什么是浏览器内核

           要想搞清楚浏览器内核是什么,首先应该搞清楚浏览器的构成是怎样的。简单来说浏览器可以分为两部分: shell + 内核。其中 shell 的种类相对较多,内核则 较少。shell 是指浏览器的外壳:如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等;内核则是一些基于标记语言显示内容的程序或模块,它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(如加入CSS)、计算网页的显示方式、然后输出至显示终端或打印机并解释执行客户端脚本。在浏览器中,shell 通过调用内核来实现各种功能的。所以内核才是浏览器的核心,它的功能如何就决定了浏览器的特点和表现如何。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。这就是了解浏览器内核对前端开发人员的意义所在。

          浏览器内核又可以分成两部分:JS 引擎和渲染引擎(layout engineer或者Rendering Engine)。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS 引擎负责解析并执行 Javascript 语言,以此实现网页的动态效果;渲染引擎则负责 JS 引擎以外的其它内核功能。最开始渲染引擎和 JS 引擎并没有很明确的区分,随着 JS 引擎越来越独立,人们所说的浏览器内核就仅指浏览器的渲染引擎了。
     
    浏览器内核的分类

         浏览器内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的浏览器内核有以下四种:

              1、Trident
              2、Gechko
              3、Presto
              4、Webkit
     

         一、Trident 

         Trident 又称 MSHTML,是微软开发的 IE 浏览器内核。它由于被包含在全世界使用率最高的操作系统Windows中,因此拥有极高的市场占有率。这也导致很多其它浏览器都使用这个引擎,例如 QQ浏览器,Maxthon(最新版已经不使用)、360 和搜狗浏览器等。但额外需要知道的是 QQ浏览器,Maxthon 和搜狗浏览器均是双核浏览器,了解这点对这些平台上的开发很有帮助。

         由于这种内核比较流行,以前的很多网页都是根据它的标准来编写的。实际上这个内核对网页标准支持不是很好,甚至在2005年,与网页标准制定组织(W3C理事会)所制定的标准发生了脱节。同时 Trident 内核本身的 BUG 比较多,对一些符合 W3C 标准的网页代码支持不是很好。这在早期的 IE 版本中比较明显,比如IE5.5以前(包括IE5.5)。其实IE6对W3C标准的支持也不是很好,而我们现在仍然有相当一部分人在使用IE6,事实上它也属于一个比较早的版本。

         二、Gechko
         Gecko 是用 C++ 编写的开源渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有 Firefox、Netscape 和 Flock 等。这个内核的优点就是功能强大、丰富,可以支持很多复杂网页效果和浏览器扩展接口。同时它还是一个跨平台内核,可以在Windows、 BSD、Linux和Mac OS X中使用。但是代价是也显而易见的,就是要消耗很多的资源,比如内存。
         三、Presto
         Presto 由 Opera Software 公司开始的,用于 Opera 浏览器的渲染引擎。Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了 Presto 内核。

         Presto 是一个动态内核,页面的全部或者部分可随着 DOM 及 Script 语法的事件而重新解析。Presto 内核附带的 JS 引擎被称为公认的浏览网页速度最快的,这得益于它在开发时的天生优势,在处理 JS 脚本等脚本语言时,会比其他的内核快3倍左右。缺点就是为了达到很快的速度而丢掉了一部分网页兼容性。此外,由于 Presto 是商业引擎,使用它的除开 Opera,就只剩下 NDSBrowser、Wii Internet Channle、Nokia 770网络浏览器等少数几个了,很大程度上限制了 Presto 的发展。

         四、Webkit
         Webkit 是一个基于 KHTML(是HTML网页排版引擎之一,由KDE所开发) 开发的开源项目,包含了来自 KDE 项目和苹果公司的一些组件,以及 Webcore 和 JavaScriptCore(SquirrelFish,V8)两个引擎,主要用于Mac OS系统。它主要的使用者有 Safari、Chrome。
         Webkit 的特点在于源码结构清晰、渲染速度极快,虽然不及 Presto 但是也胜于 Gecko 和 Trident。缺点是对于网页代码的容错性不高,也就是说对网页代码的兼容性较低,会使一些编写不标准的网页无法正确显示。


  • 相关阅读:
    elasticsearch painless脚本评分
    elasticsearch relevance score相关性评分的计算
    java 多线程间通信(二)
    java 多线程间通信(一)
    java CountDownLatch、CyclicBarrier和 Semaphore用法
    java 深入剖析ThreadLocal
    java中String、StringBuffer、StringBuilder的区别
    Leetcode: LRU Cache
    Leetcode: Anagrams(颠倒字母而成的字)
    Leetcode: First Missing Positive
  • 原文地址:https://www.cnblogs.com/ihada/p/2096978.html
Copyright © 2011-2022 走看看