/ 浏览器  

浏览器内核

浏览器内核

浏览器内核有哪几种?

Trident:

IE(Internet Explorer),由于其被包含在全世界使用率最高的操作系统 Windows 中,得到了极高的市场占有率,从而使得 Trident 内核(也被称为 IE 内核)长期一家独大。

但是由于微软长时间没有更新 Trident 内核,则导致了两个后果:一是 Trident 内核曾经几乎与 W3C 标准脱节(2005 年),二是 Trident 内核的大量 Bug 等安全性问题没有得到及时解决,然后加上一些致力于开源的开发者和一些学者们公开自己认为 IE 浏览器不安全的观点,也有很多用户转向了其他浏览器。

Trident 内核常见浏览器

(1)IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);

(2)猎豹安全浏览器:1.0-4.2 版本为 Trident+Webkit,4.3 版本为 Trident+Blink;

(3)360 安全浏览器 :1.0-5.0 为 Trident,6.0 为 Trident+Webkit,7.0 为 Trident+Blink;

(4)360 极速浏览器:7.5 之前为 Trident+Webkit,7.5 为 Trident+Blink;

(5)傲游浏览器 :傲游 1.x、2.x 为 IE 内核,3.x 为 IE 与 Webkit 双核;

(6)搜狗高速浏览器:1.x 为 Trident,2.0 及以后版本为 Trident+Webkit;

兼容模式

国内很多的双核浏览器的其中一核便是 Trident,美其名曰 “兼容模式”。

EdgeHTML 内核

Window10 发布后,IE 将其内置浏览器命名为 Edge,Edge 最显著的特点就是新内核 EdgeHTML。

Gecko ([‘gekəʊ])

开源内核

Gecko(Firefox 内核):Netscape6 开始采用的内核,后来的 Mozilla FireFox(火狐浏览器) 也采用了该内核,Gecko 的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko 内核的浏览器也很多,这也是 Gecko 内核虽然年轻但市场占有率能够迅速提高的重要原因。

Firefox 内核

事实上,Gecko 引擎的由来跟 IE 不无关系,前面说过 IE 没有使用 W3C 的标准,这导致了微软内部一些开发人员的不满;他们与当时已经停止更新了的 Netscape 的一些员工一起创办了 Mozilla,以当时的 Mosaic 内核为基础重新编写内核,于是开发出了 Gecko。不过事实上,Gecko 内核的浏览器仍然还是 Firefox (火狐) 用户最多,所以有时也会被称为 Firefox 内核。此外 Gecko 也是一个跨平台内核,可以在 Windows、 BSD、Linux 和 Mac OS X 中使用。

Webkit

Safari 浏览器

只要提到 Webkit,大多数人立马想到的必然是 Chrome,结果导致如今有了把 webkit 称为 chrome 内核的错误说法,即使 chrome 的内核已经是 blink,其实 Webkit 的祖先是 Safari,也就是苹果系列产品的专属浏览器。

WebKit 是 KHTML 的分支

WebKit 的前身是苹果公司使用 KDE(Linux 桌面系统)开发的 KHTML 开源引擎,可以说 WebKit 是 KHTML 的一个开源分支。

Chromium Fork webkit

2008 年,谷歌公司发布了 chrome 浏览器,浏览器使用的内核被命名为 chromium。chromium fork 自开源引擎 webkit,并提高了 WebKit 的代码可读性和编译速度。

V8 引擎

谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度

Google 的 Chromium 项目最初一直使用 WebKit(WebCore) 作为渲染引擎,但由于后来苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Google 决定从 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研发)。

Blink 其实是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 项目此前一直使用 WebKit(WebCore) 作为渲染引擎,但出于某种原因,并没有将其多进程架构移植入 Webkit。

后来,由于苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。

基于以上原因,Google 决定从 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研发),将在 WebKit 代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离 WebKit 的影响,创造一个完全独立的 Blink 引擎。这样以来,唯一一条维系 Google 和苹果之间技术关系的纽带就这样被切断了。

Presto ([‘prestəʊ])

Opera 浏览器

Presto 是 Opera 自主研发的渲染引擎,然而为了减少研发成本,Opera 在 2013 年 2 月宣布放弃 Presto,转而跟随 Chrome 使用 WebKit 分支的 Chromium 引擎作为自家浏览器核心引擎。

在 Chrome 于 2013 年推出 Blink 引擎之后,Opera 也紧跟其脚步表示将转而使用 Blink 作为浏览器核心引擎。

移动端

移动端的浏览器内核主要说的是系统内置浏览器的内核

目前移动设备浏览器上常用的内核有 WebkitBlinkTridentGecko

1、iPhone 和 iPad 等苹果 iOS 平台主要是 WebKit

2、Android 4.4 之前的 Android 系统浏览器内核是 WebKitAndroid 4.4 系统浏览器切换到了 Chromium,内核是 Webkit 的分支 Blink

3、Windows Phone 8 系统浏览器内核是 Trident

webkit 内核了解多少?(chrome 内核是 b-link)

深入剖析 webkit

微信 x5 内核和别的内核有什么差别?(x5 是基于 webkit 的)

认识 X5

  • 腾讯基于优秀开源 Webkit 深度优化的浏览器渲染引擎

  • 为抹平不同 Android 版本不同 Webview 的坑而生。但本身也带来了许多坑。

  • 虽然官方不承认,但实际上它是基于 Chromuim 开源项目的。

    webkit 内核以及 blink 内核在 x5 的使用情况

  • QQ 浏览器:6.2 版本及以后使用 blink 内核。

  • X5 tbs 1.x:版本号为 02xxxx,使用 webkit 内核。

  • X5 tbs 2.x:版本号为 03xxxx。使用 blink 内核。

  • WebKit是一个开源的项目,其前身是来源于 KDE 的 KHTML 和 KJS。该项目专注于网页内容的展示,开发出一流的网页渲染引擎。
  • Chromium是一个建立在 WebKit 之上的浏览器开源项目,由 Google 发起的。
  • ** Chrome**是 Google 公司的浏览器产品,它基于 chromium 开源项目。可以理解为,内核是开源的,UI 是闭源的。
  • Blink是 Google 退出 WebKit 项目,从而自己创建的渲染引擎。但并不是全新的引擎,Blink 目前就是从 WebKit 直接复制出一个版本出来,然后将与 chromium 无关的 Ports 全部移除掉,将代码结构重新整理,就目前而言,Blink 的渲染和 WebKit 是一样,但是,以后两者将各自走不同的路。

X5 升级了

截至 16 年 4 月份,x5 升级全量发布。
TBS2.0 基于 Android 5.0 WebView Blink 内核(M37 版本)适配定制优化,适配 Android 全部主流平台,可以在所有 Android 手机上使用 Blink 的技术能力。具有更好的 H5/CSS3 支持和性能。TBS2.0 已经发布,将逐步在各客户端中静默升级,无需更新微信、手机 QQ、QQ 空间即可使用最新的 TBS2.0 Blink 内核。

更简洁地说,即是:

  • 基于 Blink 内核(chrome 37 版本)
  • 适用于 Android 全部主流平台
  • 静默升级

PS:iOS 版本的微信 Web View 一直是 WKWebView 内核,WKWebView 的版本依赖于 iOS 的系统版本。

TBS2.0 内核详情

  • BLINK 版本: 基于 Chrome 37
  • HTML 版本: HTML5.0
  • XHTML 版本: xHTML Basic 1.0 | xHTML1.1
  • SVG 版本: SVG1.2
  • WML 版本: Wml 1.0
  • CSS 版本: CSS3
  • Spdy 版本: 3.1
  • 支持的 JavaScript 版本: Ecma5

Changelog 以及 解读

1.内核从 Webkit 升级至 Blink,拥有更好的支持

那么哪里可以查阅兼容性呢?

X5 CanIUse

2.内核版本号升级到 362xx 版本。可以根据 UserAgent判断当前环境是否已升级到 TBS2.0 版本,包含(TBS/03xxxx)字段。

那么怎么查看自己微信里的 TBS 版本?

用微信打开这个页面,检查 TBS 的版本号,0362xx 表示已更新。
页面的代码只有两句,为:

1
2
3
// 检测页面的核心代码
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = window.navigator.userAgent;

3.CSS3 属性支持增强:

  • 完整支持 flex
  • 伪元素支持动画效果
  • filter: blur 有模糊效果

PS:更多更具体的支持情况可查阅这里

4.autoplay 属性有效,可自动播放

5.canvas 支持设置背景色

6.标准的缓存策略,支持 Spdy 3.1

7.动画性能提升

8.更好的 inspector 支持

参考资料:

总结

常用工具

我们可以从中了解到什么

一、工具方面:

  • 可以通过查询 UA 来检测是否为 X5-TBS/03xxxx,在线检测地址
  • 想知道某个 CSS3 属性,或者其他 API 在 X5 是否支持的时候,可以查询X5 CanIUse
  • 远程调试微信内页面时,在 Android 下可以使用微信远程调试工具-微信 web 开发者工具,在 iOS 下使用 Safari 远程调试即可。

二、对于开发调试页面

  • 目前,暂时还没有查找到 X5 在微信 android 客户端的版本分布情况的数据(可能是由于 X5 tbs2.0 是今年 4 月份初才开始全量发布的)。
  • 虽然说,X5 是静默升级,无需用户手动更新,基本上都实现升级为最新版本(业界说法),但仍存在 X5 内核是旧版本的情况(根据是部分测试的检测 UA 结果)。希望能够在后续的日子可以获取到相关的数据。
  • 手机同时安装了 QQ 浏览器和微信,但 QQ 浏览器内核版本不等于微信内核版本,只有在 QQ 浏览器内核为大于等于 6.2 版本才是 Blink 内核,调试页面的结果才可以替代在微信内页面调试的结果(想要不登陆微信用 QQ 浏览器来替代调试的需要注意下

X5 的版本分布情况

据腾讯内部的小伙伴告知,x5 内核基本覆盖理论上达到 100%,但难免会有漏网之鱼。而根据实际数据抽样整理显示,截至 2016 年 5 月 19 日,x5 内核基本覆盖率达到 91.47%。

X5 问题汇总