浏览器引擎、网页引擎、搜索引擎

来源:互联网 发布:淘宝app充值为什么便宜 编辑:程序博客网 时间:2024/05/16 01:44

    目前主流的开源搜索引擎主要有两个,一个是基于Java的Apache Lucene,另一个是基于C++的Sphinx。在建立索引所需时间方面,Sphinx只需Lucene时间的50%左右,但是索引文件Sphinx比Lucene要大一倍,即Sphinx采用的是空间换时间的策略。在全文检索速度方面,二者相差不大。全文检索精确度方面,Lucene要优于Sphinx。另外,在加入中文分词引擎的难易程度上,Lucene要优于Sphinx。因此,在一般情况下,选择Lucene作为全文搜索引擎是比较好的选择。
  调研:开源搜索引擎-- http://blog.csdn.net/xum2008/article/details/8740063
  搜索引擎开源软件-- http://www.oschina.net/project/tag/130/search-engine
  大数据处理方面的 7 个开源搜索引擎-- http://www.open-open.com/news/view/193eb09

  曾经名噪一时的7个搜索引擎:现在都在哪里呢? http://geek.csdn.net/news/detail/94974

》搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。

网页浏览器的排版引擎也被称为页面渲染引擎,它负责取得网页的内容(HTML、XML、图象等等)、整理信息(例如加入CSS等),以及计算网页的显示方式然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要排版引擎。

Mozilla将其排版引擎(Gecko)作为独立于浏览器的一个配件,Gecko是套开放源代码的、以C++编写的网页排版引擎。Gecko是跨平台的,能在Microsoft Windows、Linux和Mac OS X等主要操作系统上运行。

目前是互联网上最流行的排版引擎: Internet Explorer;世界之窗浏览器;Avant腾讯TTNetCaptor; Sleipnir; GOSURF; GreenBrowserKKman
KHTML,是HTML网页排版引擎之一,由KDE所开发。KHTML拥有速度快捷的优点,但对错误语法的容忍度则比Mozilla产品所使用的Gecko引擎小。苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用。WebCore及WebKit引擎均是KHTML的衍生产品;WebKit是Mac OS X v10.3及以上版本所包含的软件框架,WebKit是Mac OS X的Safari网页浏览器的基础。

   WebKit 是一个开源的浏览器引擎。WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。

Webkit已成新的宠儿,它的幕后推手是当今科技界炙手可热的两家公司——谷歌(2013年谷歌宣布停止使用WebKit作为Chrome浏览器的渲染引擎,并开发自己的网页渲染引擎“Blink”)和苹果。值得注意的是,Webkit内核浏览器的增长,对应的便是IE浏览器的份额流失。
有意思的是,连微软自己都在探讨在IE中引入Webkit的可能性,微软CEO鲍尔默曾表示“将可能使用开源引擎Webkit来拓展IE”。即便这是鲍尔默的烟雾弹,也可以肯定的是,依旧占据统治地位的IE无法忽视Webkit可能带来的威胁。

Google 宣布将在未来的 Google Chrome/Chromium 中使用基于 WebKit 的 fork Web 渲染引擎:Blink。同时 Opera 表示也将跟进 Google Chrome/Chromium 的步伐。着重改善 DOM 架构,将使用 JavaScript 实现 DOM。

这一举措意味着,现在有四大渲染引擎在线:WebKit、Blink、Trident 和Gecko。对于用户来说,渲染引擎的差异化意味着他们在使用不同浏览器打开同一网页时将得到不同的结果——在移动设备上尤其如此。

不同浏览器有不同的JS引擎:

WebKit , Safari浏览器          ->SquirrelFish Extreme,

Firefox                                    àTraceMonkey引擎

Google Chrome                     àV8引擎,(C++)

Opera                                   -> Carakan

 Mozilla                          ->SpiderMonkey(C语言)

 Mozilla                                  à Rhino( Java)

Mozilla                          ->JaegerMonkey

 

SEE (Simple ECMAScript Engine) C语言开发的轻量级的 ECMAScript (JavaScript) 解析器和实时运行环境

> WebKit是开源的Web浏览器引擎,苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。WebKit 还支持移动设备和手机,包括iPhone和Android手机都是使用WebKit做为浏览器的核心。

浏览器的主要组件有以下几部分:

- 用户界面

除了用来显示浏览器主窗口之外的浏览器的其他部分,例如书签目录,地址栏,前进后退……。

- 浏览器引擎

这里说,浏览器引擎是查询及操作渲染引擎的接口。我在网上搜的时候也大都是默认为渲染引擎。

- 渲染引擎

用来显示请求的内容,如果请求内容为html,那么负责解析html、及css并将解释后的结果显示出来。还可以解析xml文件。

- js引擎

用来解释执行js代码。

- 网络

用来完成网络调用,如http请求。

- Native UI

用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口。

- 数据存储

属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据。

>   Gecko
是Netscape6开始采用的内核,后来的Mozilla FireFox也采用了该内核,Gecko的特点是代码完全公开,是个开源内核,因此受到许多人的青睐。

Trident

是Windows搭载的网页浏览器即IE的内核。1997年在IE4中使用。采用的排版引擎(俗称内核)为Trident。

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

猎豹安全浏览器(1.0-4.2版本为Trident+Webkit,4.3版本为Trident+Blink)
360安全浏览器(1.0-5.0为Trident,6.0为Trident+Webkit,7.0为Trident+Blink)
360极速浏览器(7.5之前为Trident+Webkit,7.5为Trident+Blink)
傲游浏览器(傲游1.x、2.x为IE内核,3.x为IE与Webkit双核)
百度浏览器(早期版本)
世界之窗浏览器[2] (最初为IE内核,2013年采用Chrome+IE内核)
2345浏览器、腾讯TT、淘宝浏览器
搜狗高速浏览器(1.x为Trident,2.0及以后版本为Trident+Webkit)
阿云浏览器(早期版本)、瑞星安全浏览器
闪游浏览器、海豚浏览器(iPhone/iPad/Android)
UC浏览器(Blink内核+Trident内核)

KHTML及KJS

khtml为排版引擎即渲染引擎,kjs为js引擎。均是由KDE研发。是自由软件,符合GPL(由他为基础开发的软件也为开源软件)。

Webkit

包括webcore排版引擎与JavaScriptCore解析引擎,均是苹果从KDE的KHTML及KJS引擎衍生而来。是苹果公司自己的内核,也是Safari浏览器使用的内核,但是符合GPL条款,所以webkit为开源的,但是Safari浏览器为部分开源,自己公司的某些接口未对外开源。在Chrome 28之前,google使用webkit中webcore与自己的javascript V8引擎。那时也统称为webkit引擎。

Blink

由Google和Opera Software开发的浏览器排版引擎。至于js引擎,想必Chrome依旧使用自己的V8引擎。

在2013年4月,Google计划将这个渲染引擎作为Chromium计划的一部分。这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支。并且在Chrome(28及往后版本)、Opera(15及往后版本)中使用。此举,谷歌称称将与苹果的开源浏览器核心Webkit分道扬镳。

Presto

是Opera12.10至Opera7中采用的内核,现已停止开发并废弃,由于这是商业引擎(非开源),所以在发展上有了限制。这篇里面,我有写到,在Opera12.10版本以后使用Blink作为其内核。

渲染引擎的基本工作流程(解析HTML构建DOM树,渲染树构建,渲染树布局,绘制渲染树)。

我们说过常规解析器只能解析上下文无关语法的语言。这种语言的一个直觉的定义是它的句法可以用BNF完整的表达。其规范定义请参考 http://en.wikipedia.org/wiki/Context-free_grammar

解析器的类型

解析器有两种基本类型——自上而下解析器和自下而上解析器。主观上可以认为自上而下的解析器从上层句法结构开始尝试匹配句法;自下而上的则从输入开始,慢慢转换成句法规则,从底层规则开始,直到上层规则全部匹配。

0 0
原创粉丝点击