浏览器内核
浏览器内核有哪几种?
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/Blink
Chromium Fork webkit
2008 年,谷歌公司发布了 chrome 浏览器,浏览器使用的内核被命名为 chromium。chromium fork 自开源引擎 webkit,并提高了 WebKit 的代码可读性和编译速度。
V8 引擎
谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度。
Blink 是 WebKit 的分支
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 作为浏览器核心引擎。
移动端
移动端的浏览器内核主要说的是系统内置浏览器的内核。
目前移动设备浏览器上常用的内核有 Webkit,Blink,Trident,Gecko 。
1、iPhone 和 iPad 等苹果 iOS 平台主要是 WebKit。
2、Android 4.4 之前的 Android 系统浏览器内核是 WebKit,Android 4.4 系统浏览器切换到了 Chromium,内核是 Webkit 的分支 Blink。
3、Windows Phone 8 系统浏览器内核是 Trident。
webkit 内核了解多少?(chrome 内核是 b-link)
微信 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 & Chromuim &Chrome & 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,拥有更好的支持
那么哪里可以查阅兼容性呢?
2.内核版本号升级到 362xx 版本。可以根据 UserAgent判断当前环境是否已升级到 TBS2.0 版本,包含(TBS/03xxxx)字段。
那么怎么查看自己微信里的 TBS 版本?
用微信打开这个页面,检查 TBS 的版本号,0362xx 表示已更新。
页面的代码只有两句,为:
1 | // 检测页面的核心代码 |
3.CSS3 属性支持增强:
- 完整支持 flex
- 伪元素支持动画效果
- filter: blur 有模糊效果
PS:更多更具体的支持情况可查阅这里
4.autoplay 属性有效,可自动播放
5.canvas 支持设置背景色
6.标准的缓存策略,支持 Spdy 3.1
7.动画性能提升
8.更好的 inspector 支持
参考资料:
总结
常用工具
- 检测是否为 x5-TBS/03xxxx
- x5 的各项支持情况-X5 CanIUse
- Android 下微信远程调试工具-微信 web 开发者工具(PS:iOS 下使用 Safari 远程调试即可)
我们可以从中了解到什么
一、工具方面:
- 可以通过查询 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%。