Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7092827
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 架构设计与优化

2014-08-07 16:38:09

原文地址:WebKit之浏览器和内核 作者:scq2099yt

一、浏览器
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引擎、内存使用、编译的二进制文件大小等。


阅读(744) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~