主流浏览器的分类和浏览器的发展史

  • 2017-05-23
  • 25
  • 9

这是我在市场部 2017-05-24 的分享内容,整理如下:

浏览器内核

浏览器最重要或者说核心的部分是 “Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。

负责对网页语法的解释(如标准通用标记语言下的一个应用 HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。

不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

浏览器的内核分类

内核分类:

  • Trident(IE 内核):该内核程序在 1997 年的 IE4 中首次被采用,是微软在 Mosaic 代码的基础之上修改而来的,并沿用到 IE11,也被普遍 称作” IE 内核”。Trident
    实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用 IE 内核而非 IE 的浏览器 (壳浏览器) 涌现。
  • Gecko(Firefox 内核): Netscape6(网景)开始采用的内核,后来的 Mozilla FireFox (火狐浏览器) 也采用了该内核,Gecko 的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。
  • Presto(Opera 前内核)(已废弃): Opera12.17 及更早版本曾经采用的内核,现已停止开发并废弃,该内核在 2003 年的 Opera7 中首次被使用,该款引擎的特点就是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。而且它是个商业引擎,不开源,这一定程度上也限制了它的发展。Opera 现在采用的是 Webkit 内核,并已宣布最终会转向谷歌的 Blink 内核。
  • Webkit(Safari 内核,Chrome 内核原型,开源): 它是苹果公司自己的内核,也是苹果的 Safari 浏览器使用的内核。Webkit 引擎包含 WebCore 排版引擎及 JavaScriptCore 解析引擎,均是从 KDE 的 KHTML 及 KJS 引擎衍生而来。
  • Blink(谷歌开发,并正在不断完善): 是一个由 Google(主导) 和 Opera(参与) 开发的浏览器排版引擎,Google 计划将这个渲染引擎作为 Chromium 计划的一部分,并且在 2013 年 4 月的时候公布了这一消息。 这一渲染引擎是开源引擎 WebKit 中 WebCore 组件的一个分支,并且在 Chrome(28 及往后版本)、Opera(15 及往后版本)和 Yandex 浏览器中使用。

    2013 年 4 月 3 日,谷歌宣布将与苹果的开源浏览器核心 Webkit 分道扬镳,在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。

    苹果在 Safari 中采用 Webkit 核心,并于 2005 年将 Webkit 公开为开源软件。谷歌当时采用苹果的 Webkit 核心打造了 Chrome 浏览器。Opera 也宣布称将会转向 Webkit 核心,但是谷歌宣布此举后,Opera 表示将会跟随谷歌采用其Blink浏览器核心,同时参与了 Blink 的开发。

两大排版引擎

  • WebCore:WebCore 是苹果公司开发的排版引擎,它是在另外一个排版引擎 “KHTML” 的基础上而来的。使用 WebCore 的主要有 Safari,此外还有 OmniWeb、Shiira、Swift 等。Safari 现支持 Windows,但效果不如 iOS 上的。
  • KHTML:KHTML,是 HTML 网页排版引擎之一,由 KDE 所开发。

检测浏览器内核的方法:

用户代理英文名为 User Agent,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本浏览器渲染引擎、浏览器语言、浏览器插件等。

这是一个获取用户代理头信息的程序:Demo

下面是我在 2017-05-24 当天导出的给大浏览器用户代理头信息:

  • Firefox
    Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
  • Konqueror
    Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)
  • Safari
    Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
  • Chrome
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
  • Opera
    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36 OPR/45.0.2552.812
  • IE6 ~ IE8
    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
  • IE9 ~ IE11
    Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko
  • Edge
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393

浏览器的发展史

  1. Mosaic:最早的时候有一个浏览器叫 NCSA Mosaic,把自己标称为 NCSA_Mosaic/2.0 (Windows 3.1) ,它支持文字显示的同时还支持图片,于是 Web 内容慢慢变得丰富起来了。
  2. Mozilla:然后出现了一个新的网页浏览器,“Mozilla”,新浏览器最后正式公布的名称是 Netscape,它把自 己标称为 Mozilla/1.0 (Win3.1)。
  3. 用户代理:Netscape 支持框架显示,后来框架在大家中间流行起来了,但 Mosaic 不支持框架啊,于是伟大的“用户代理探测”技术出现了,如果是 “Mozilla”,那就发给支持框架的页面,至于其他的浏览器,则发给不含框架的页面。
  4. Internet Explorer:把 Windows 叫做“几乎不曾做过调试的设备驱动器”。Microsoft 于是推出了自己的 网页浏览器,叫做 Internet Explorer,希望它能成为“ Netscape 终结者”。
  5. Internet Explorer 也支持框架,但它不是 Mozilla 啊,所以 IE 刚出来时 UA 还不会给它发送带有框架的页面。Microsoft 慢慢烦躁起来,不再寄希望于网站管理员逐渐认识 IE 并给它发框架,而是宣称自己是“兼容 Mozilla ”的,开始模仿 Netscape,把自己标称为 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95) ,这样 Internet Explorer 也能收到带框架内容的页面了。
  6. Microsoft vs Netscape:Microsoft 把 IE 和 Windows 一起卖,并且把产品也弄得比 Netscape 更好了,拉开了第一场浏览器之战。结果和大家知道的一样,Netscape 被干掉了。Netscape 在 1998 年 11 月,网景被美国在线(AOL)收购。
  7. Mozilla:后来 Netscape 以 Mozilla 的新名称重生了,构造了 Gecko ,标称其为 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 ,Gecko 属于渲染引擎,表现优异。
  8. Firefox:Mozilla 开发了 Firefox ,标称为 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0 ,并且Firefox 表现也非常优秀。Gecko 扩张迅速,越来越多的浏览器开始采用该引擎。
  9. Konquerer:Gecko 表现优秀,IE 则很差劲,于是身份甄别再次发生,输送给 Gecko 的是设计良好的网页代码,其他浏览器就没有这个待遇了。 Linux 的跟随者很伤心,因为他们创建了基于 KHTML 引擎支持的 Konqueror ,但却不会被输送好代码,虽然他们自己认为 KHTML 和 Gecko 一样优秀。于是 Konquerer 开始伪装自己 “像 Gecko” 那样 以得到好的网页,并标称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。
  10. WebKit:Apple 开发了 Safari,使用了 KHTML,同时也增加了很多新特 性,后来干脆一锅煮,另起炉灶叫了 WebKit,但是它有希望能够得到那些为 KHTML 编写的网页,于是 Safari 标称自己为 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。
  11. IE6 ~ IE8: Microsoft 越来越担心 Firefox 的发展,重新启动了 Internet Explorer 的开发,标称自己为 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ,可以很好的渲染代码,想看看能不能遏制 firefox 的发展。
  12. IE9 ~ IE11: IE 历经几个版本的发展,firefox 非但没被抑制住,反而发展得越来越好;后来 IE 做了部分妥协,并跟大家一样,说自己像 Gecko,并称自己是:Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko。
  13. Edge: 在承认自己像 Gecko 之后好像 IE 的市场份额上升得还是不够理想,于是 Microsoft 终于抛弃了自己的渲染引擎 Trident,转而拥抱苹果的渲染引擎 WebKit,于是就有了 Edge。
  14. Chrome: Google 也开发了自己的浏览器 Chrome, 使用了 Webkit,有点像 Safari,希望能得到为 Safari 编写的网页,于是决定装成 Safari,而 WebKit 呢又伪装自己是 KHTML,KHTML 呢又是伪装成 Gecko的,同时所有的浏览器又都宣称自己是 Mozilla,于是,Chrome 宣称自己是 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 。
  15. 结果:UserAgent 字符串彻底混乱了,用户代理原有的作用也被弱化了不少。