转载请注明出处:http://blog.csdn.net/milado_nju/
# 浏览器简介
浏览器发展到今天还是很令人吃惊的,这很大程度上得益于互联网的快速发展和新的技术不断涌现。浏览器的核心是渲染引擎,通常也称为浏览器的内核,其是将文本,图片等信息渲染成图像,这也是浏览器的主要功能。
现代浏览器的始祖应该是1993发布的Mosaic,其领导者Marc Andreessen也就是Netscape浏览器的创始人。刚开始,其功能很简单,也就是能渲染简单的静态HTML元素,没有JavaScript,没有CSS,更没有现在功能丰富的各种能力。后来,这些技术逐渐被引入Netscape浏览器并被加以实现。
受Mosaic浏览器的深刻影响,微软于1995年推出了Internet Explorer(以下简称为IE)浏览器,开始第一次浏览器大战,后来大家都知道了,就是IE获得了空前的成功,这导致了后来它裹足不前,很长时间没有更新和推进。而Netscape凤凰重生,创立了一个基金会,开发了著名的Mozilla Firefox。2005年,苹果的渲染引擎WebKit开源,这拉开了一个新的序幕,从此基于WebKit的浏览器遍地开花,不仅包括PC市场,也包括了逐步崛起的移动市场。随后,Google于2008年发布了基于WebKit的Chrome浏览器,很快深受用户的喜爱,市场份额逐步上升。
目前,对于PC市场而言,三大主流的浏览器是MicrosoftIE、Mozilla Firefox和Google Chrome,他们占据了PC市场超过了90%的浏览器份额,其对应的渲染内核分别是Trident,Gecko和WebKit(现在是Blink)。
对于移动市场来说,就是另外一个情形了。基于WebKit内核的浏览器占据了绝对垄断的地位,这是因为占据移动市场主导地位的操作系统是苹果的iOS和Google的Android,而它们的默认浏览器都是基于WebKit内核的。对于中国市场来说,Android上有很多定制的浏览器,例如UC,腾讯,百度,360等,其中主要基于AndroidWebView(这是一个嵌入式的编程接口,以后会详细介绍)开发,所以从内核角度来说,它们同Android默认浏览器并无什么大的不同。不过,它们中的一些也开始基于WebKit定制自己的内核,修改其行为以便更好适应自己的需求。
#支持的操作系统
就三大浏览器来说,Chrome支持的平台是最多的,基本上覆盖了桌面和移动上的主流操作系统,其次是Firefox,IE垫底,具体如下图表格所示:
|
Chrome
|
Firefox
|
IE
|
Windows
|
Y
|
Y
|
Y
|
Mac
|
Y
|
Y
|
N
|
Linux
|
Y
|
Y
|
N
|
Android
|
Y
|
Y
|
N
|
iOS
|
Y
|
Y
|
N
|
Windows phone
|
N
|
N
|
Y
|
对于那些三者都不支持的或者非主流的操作系统,这里就不再列出来了。
就浏览器所使用的内核来说,WebKit支持的操作系统当然也是最多的,基本上所有现有的操作系统都支持,其次是Gecko,垫底的依然是IE。
|
WebKit
|
Gecko
|
Trident
|
Windows
|
Y
|
Y
|
Y
|
Mac
|
Y
|
Y
|
N(4.0后)
|
Linux
|
Y
|
Y
|
N
|
Android
|
Y
|
Y(but not work for android-x86)
|
N
|
iOS
|
Y
|
N
|
N
|
Windows phone
|
N
|
N
|
Y
|
BlackBerry
|
Y
|
N
|
N
|
Tizen
|
Y
|
N
|
N
|
Symbian
|
Y
|
N
|
N
|
特别指出的是,这里WebKit是广义上的WebKit,而不是仅仅指Chrome所使用的WebKit部分。
#内核特性
一个浏览器内核无非需要以下几个主要部分,如HTML/CSS解析器,网络处理,JavaScript引擎,2D/3D图形引擎,多媒体支持等等
|
WebKit(chromium)
|
Gecko
|
Trident
|
JavaScript引擎
|
V8
|
SpiderMonkey
|
JScript/Chakra
|
2D图形引擎
|
Skia
|
Cairo
|
GDI
|
3D图形引擎
|
OpenGL, OpenGLes, D3D
|
OpenGL, OpenGLes, D3D
|
D3D
|
视频
|
Windows Media Framework,
FFmpeg, openmax
|
Windows Media Framework
|
Windows Media Framework,gstreamer
|
#浏览器特性
浏览器的共同特征这里不想赘述,例如书签管理,历史记录管理,设置,开发者工具,下载管理等这些基本能力。下面介绍浏览器中所涉及的一些重要特征:
进程架构:
安全机制:包含用户的数据和本地信息,例如URL黑名单机制,沙箱模型等
嵌入本地代码的能力: 浏览器能够运行本地代码的能力,例如chrome的native Client和IE的activeX
书签,历史记录等用户数据同步: 书签的云端存储实现多个操作系统或者终端的统一体验。
|
Chrome
|
Firefox
|
IE
|
进程架构
|
不同网页,不同进程
|
单一进程
|
不同网页,不同进程
|
安全机制
|
沙箱模型,URL黑名单机制
|
黑名单机制
|
黑名单机制
|
嵌入本地代码的能力
|
NativeClient,NPAPI, Chrome extension
|
NPAPI, 复杂的支持编写Firefox extension的能力
|
ActiveX,NPAPI
|
书签,历史记录等用户数据同步:
|
Google的同步服务
|
Firefox的同步服务
|
IE8目前没有看到,后面应该会加入该项功能
|
在中国的浏览器市场上,还有一个有趣的现象就是所谓的双核浏览器,其本质是使用主流的浏览器内核来兼顾兼容性和性能问题,常见的做法是使用Trident来保持网页的兼容性,使用WebKit内核来提高性能和新的HTML5特性。
# 对标准的支持
目前而言,Chrome基本上是走在了支持HTML5标准的前面,Firefox其次,IE垫底。但是IE也在加大对标准的支持,这是个非常好的消息。
下面是各个浏览器对HTML5标准的支持情况,可以使用html5test.com(检查浏览器支持HTML5功能的著名网站)来测试,支持的标准越多,得分越高。
|
Chrome
|
Firefox
|
IE
|
浏览器版本
|
26
|
20
|
10
|
得分(满分500)
|
468
|
394
|
320
|
# 用户代理(user agent)
用户代理是个很奇怪的东西,其作用是用来表示浏览器的身份,因而互联网的内容供应商能够知道发送请求的浏览器是什么,它能够支持什么样的功能。因此,网页内容提供商便可以为不同的浏览器发送不同的网页内容,例如通常为chrome的桌面版和Android版会发送不通的网页以适应屏幕和操作系统的差别。
最初Mozilla是设置了自己的用户代理值,例如“Mozilla/1.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101Firefox/4.0.1”,这个含义表明这是Mozilla的windows版,使用Gecko引擎的firefox浏览器。所以,互联网的内容提供商就发送了特定的网页到浏览器。问题来了,IE发现很多内容提供商传给IE浏览器的内容没有传给Mozilla的丰富。那怎么版呢?看看IE7的用户代理设置了什么你就知道了:“Mozilla/4.0 (compatible;
MSIE 7.0; Windows NT 6.0)”。这个值表明什么呢?表明这是一个可以和Mozilla兼容的Windows版IE浏览器。这样,内容提供商会根据“Mozilla”字符串信息,发送同Firefox获得的同样的网页内容。
在这之后,风气越来越严重。Safari浏览器也设置了类似的代理,但是其加入了同AppleWebKit, Safari等信息,随着Safari的流行(特别是移动领域),Chrome等浏览器除了包含Mozilla之外,还添加了Safari浏览器的那些信息,导致它越来越长,如下:
Mozilla/5.0 (Linux; Android4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko)Chrome/18.0.1025.133 Mobile Safari/535.19
在Chrome中,你可以给用户代理设置任何自己定义的内容。方法是加入命令行参数--user-agent=”xxx”,或者你也可以打开chrome的开发者工具->设置->用户代理来为每个页面设置,需要的记住是,它们都不会被保存,所以重启后无效。
# 未来
浏览器发展了20年,其能力越来越强,未来浏览器会发展成什么样还非常难说,就目前而言,随着HTML5技术的不断成熟,其中一个重要的方向就是,浏览器厂商已经开始向Web的平台化方向发展,例如FirefoxOS,Chrome OS等。以后将详细介绍。
#参考资料
1. http://baike.baidu.com/view/1369399.htm
2. http://en.wikipedia.org/wiki/Trident_(layout_engine)
3.http://en.wikipedia.org/wiki/Gecko_(layout_engine)
4.http://en.wikipedia.org/wiki/JavaScript
5.
http://en.wikipedia.org/wiki/Comparison_of_web_browser_engines
6. http://en.wikipedia.org/wiki/Comparison_of_web_browsers
7.http://www.infoworld.com/d/applications/13-features-make-each-web-browser-unique-119
By yongsheng@chromium.org
分享到:
相关推荐
C# 使用chromium内核浏览器源码 When I hit a web site which I can not access because of a web filter, one of my options is to use the original Tor Browser which is a custom version of Firefox and I can...
WebKit和Chromium源码及原理剖析
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
Chromium开源浏览器,已经编译好的,a5版本。欢迎下载
底层基于(Chromium49/51)/(CEF3.2623/CEF3.2704)内核进行制作,支持系统XP,03,Vista,Win7/8/10 32/64。 技术支持: 内核: WebKit/Chromium/CEF3
Chromium是一个开放源代码的浏览器项目,旨在为所有Internet用户构建一种更安全,更快,更稳定的方式来体验Web。该站点包含设计文档,体系结构概述,测试信息等,以帮助您学习构建和使用Chromium源代码。
Chromium是一个开放源代码的浏览器项目,旨在为所有Internet用户构建一种更安全,更快,更稳定的方式来体验Web。该站点包含设计文档,体系结构概述,测试信息等,以帮助您学习构建和使用Chromium源代码。
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
Docker 中的 Chromium 浏览器 如果您想知道如何在 Docker 中运行 Chromium。 这个 docker image 可能是一个解决方案。 在 Docker 中运行 Chrome 的需要有助于部署测试。 例如,您可能有另一个 docker 镜像正在运行,...
Delphi开发Chromium谷歌内核浏览器控件,支持Delphi 7- Delphi 10.2 亲自测试调试安装正常。内有详细帮助文档,方便查阅! Chromium32位框架(必须的,重要,详细查阅帮助文档) ...Chromium64位框架 ...
可通过现代Web浏览器(无需在客户端上进行安装或配置)或任何VNC客户端来访问应用程序的GUI。 非常感谢@jlesage。 该图像基于 表中的内容 取消RAID 用户/组ID 访问GUI 安全 南极 证明书 VNC密码 反向代理 基于...
微软的浏览器自动化工具,通过Python语言...该工具支持Linux、macOS和Windows系统下的Chromium、Firefox和WebKit浏览器。Playwright-Python旨在简化和优化浏览器自动化过程,为开发人员提供更高效的测试和操作体验。
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
描述了chromium开源浏览器中的安全机制,沙箱保护,多进程机制
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
chromium浏览器linux版本,版本号1000548,2022年5月版本,现代语言兼容
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
CEF4Delphi 是由 Salvador Díaz Fau 创建的一个开源项目,旨在为开发人员提供一种将基于 Chromium 的浏览器嵌入到他们使用的 Delphi 或 Lazarus/FPC 开发的应用程序中的解决方案。CEF4Delphi 是基于 DCEF3 和 fpCEF...
最新的内核版本 (Version) WebKit 537.36 Chrome 74.0.3729.157 的CMake后的win32下Visual Studio 2015工程,解压后,请用vs2015(或以上)打开Platform-win32目录下cef.sln,本人Debug模式、Release模式下都编译...