一、浏览器
1、简史
浏览器是互联网时代非常重要的应用。
最早的浏览器由Berbers-Lee在20实际90年代初推出,即WorldWideWeb(后更名为Nexus),1991年公布源码。
1993年Marc Andreessen主持开发了浏览器Mosaic,即后来的Netscape浏览器。
1995年微软推出IE浏览器,逐渐取代网景浏览器直至其消亡。
2004年在由网景成立的Mozilla基金会推动下,网景主导发布了Firefox 1.0,市场份额逐步攀升。
2003年苹果发布了Safari浏览器,并在2005年公布其重要源码,发起开源项目WebKit,即Safari浏览器内核。此外,苹果还推出了Safari浏览器的移动版,至此进入一个新的里程碑。
2008年Google以苹果开源项目WebKit作为内核,创建一个新的项目Chromium,并以此为基础发布了自己的浏览器Chrome。
需要注意的是:
(1)WebKit是Safari浏览器的内核,而Chromium本身就是一个浏览器,而不是Chrome浏览器的内核。
(2)Chromium是一个开源试验场,会尝试很多新技术和创新,稳定后,Chrome会将其集成进来,Chrome还会提供Google自己的技术和功能,比如:网络服务、编解码器等,这是Chromium所不具备的。
在PC领域,IE、Firefox、Chrome三足鼎立,占据超过90%的浏览器市场份额。
在Mobile领域,得益于iOS和Android系统的统治地位,Safari和Android浏览器非常流行。
可以看得出,除了IE,其它都与WebKit有血缘关系,如此牛掰的东西怎能不提?
2、特性
浏览器的功能繁多,包括网络、资源管理、网页浏览、多页面管理、插件和扩展、书签管理、历史记录管理、设置管理、下载管理、账户和同步、安全机制、隐私管理、外观主题、开发者工具等,下面介绍其重要功能:
(1)网络:通过网络模块下载各种资源,包括HTML、图片、音视频文件等。
(2)资源管理:管理下载资源,避免重复下载,缓存资源等。
(3)网页浏览:渲染页面,可视化显示。
(4)多页面管理:多页面加载和浏览。
(5)插件和扩展:支持特定功能,比如NPAPI插件、PPAPI插件、ActiveX插件等。
(6)账户和同步:历史记录、书签等信息同步到服务器。
(7)安全机制:显示网站是否安全、设置安全级别、防止恶意攻击等。
(8)开发者工具:帮助网页开发者审查HTML元素、调试JavaScript脚本、改善网页性能等。
各浏览器支持主流操作系统情况如下表:
二、内核
1、简介
内核又称为渲染引擎,所谓渲染即将HTML/CSS/JavaScript及其它资源转换成可视化的图像结果。
主流渲染引擎包括Trident、Gecko和WebKit,它们分别是IE、Firefox和Chromed的内核(2013年Google发布Blink内核,其实质是从WebKit复制出去的)。
需要注意的是,渲染引擎和浏览器并不是严格一一对应的,其实,同一渲染引擎可以被多个浏览器采用。
2、特征
根据渲染引擎所提供的渲染网页的功能,其需要包含下图所示的众多功能模块:
图中主要分三层,最上层使用虚线框住的是渲染引擎所提供的功能,不难看出一个渲染引擎主要包括如下功能:
(1)HTML解释器:将HTML文本解析成DOM树。
(2)CSS解释器:为DOM中的各个元素对象计算出样式信息,从而为计算最后网页的布局提供基础设施。
(3)布局:将DOM中的元素对象同样式信息结合起来,计算其大小位置等布局信息,形成内部表示模型。
(4)JavaScript引擎:解析JavaScript代码,改变网页内容和样式信息,从而改变渲染结果。
(5)绘图:使用图形库将布局计算后的各个网页的节点绘制成图像结果。
一个典型的网页渲染过程如下图所示:
渲染的先后关系由图中的实线箭头表示,从左上角开始,首先是网页内容,输入到HTML解释器,HTML解释器在解释后构建一棵DOM树,这期间如果遇到JavaScript代码则交给JavaScript引擎去处理;如果网页中包含CSS,则交给CSS解释器去解释。当DOM建立的时候,渲染引擎接收到来自CSS解释器的样式信息,构建一个新的内部绘图模型。该模型由布局模块计算模型内部各个元素的位置和大小信息,最后由绘图模块完成从该模型到图像的绘制。
上图中虚线箭头表示在渲染过程中,每个阶段可能使用到的其它模块。
3、WebKit
广义的WebKit如下图所示:
狭义的WebKit即上图中的“WebKit嵌入式接口”,它指的是在WebCore(包含前面提到的HTML解释器、CSS解释器和布局等模块)和JavaScript引擎之上的一层绑定和嵌入式编程接口,可以被各种浏览器调用。
随着WebKit的发展,其也在分裂,典型的代表是WebKit2和Chromium新内核——Blink。
(1)WebKit2
2010年4月,苹果宣布WebKit2,其采用多进程模型,UI进程和网页渲染进程分离,具体如下图所示:
(2)Blink
2013年4月,Google宣布Blink,其将WebKit中与Chromium无关的代码删除,并加入如下新特性:
(A)实现跨进程的iframe,为iframe创建一个单独的沙箱进程。
(B)重新整理和修改WebKit关于网络方面的架构和接口。
(C)将DOM树引入JavaScript引擎中,提高渲染速度。
(D)针对各种技术的性能优化,包括但不限于图形、JavaScript引擎、内存使用、编译的二进制文件大小等。
阅读(747) | 评论(0) | 转发(0) |