前言:
   浏览器是一个软件,专门用来显示网页服务器或文件系统的 HTML文件内容的,并可以让用户与这些html文件交互。
   Html文件内容包括:文本文字,图像,动画,音频,视频,声音,流媒体等。
那么,
 1.html,js 和 css 是怎么被浏览器识别,并显示出来的呢?
 2.浏览器最重要的内核是干什么用的? 又是怎么构成的?
 3.chrome 花了9年占有浏览器2/3的市场,又是如何崛起的?

一.浏览器的发展史:

操作系统 和 网络通信的发展,人们可以通过邮件互通信息,但是希望有一种方式更加直观的看到更多的信息知识。于是当时很多数学家,物理学家等成立了很多项目组,研究这种技术,并用这种技术推出了一种软件 叫做浏览器,不同的浏览器附带了一些很相似的脚本语言,
   比如livescript,jscript等等。其中最出名的是 Mosaic项目组 和 KDE项目组,分别研究出了Gecko引擎 和 KHTML引擎,
   这种引擎用在浏览器软件上,可以让浏览器在显示屏是那个显示文字,图像等信息。

面向市场的第一个成熟的浏览器是由1994年成立的网景公司在1994年10月推出的 Netscape Navigator 浏览器(图1),它采用了Mosaic项目组的研发引擎Gecko,并能应用于当时的主流操作系统,如微软的windows系统,一推出就占据了接近100%的网页和内容搜索的流量入口,并且网景公司意图研发自己的操作系统,以便将 Netscape 浏览器绑定上去,更好的占有市场。

微软看到了浏览器 以及 附带的搜索引擎的未来应用的巨大潜力,也看到了浏览器是任何操作系统的必须软件,为了对抗Netscape,微软购入当时没有名气的Spyglass公司的浏览器源码,修改后命名为 trident ,在1995年绑定到操作系统 Windows上,
   并且命名为 Internet Explorer 网络探索者,于是IE和Netscape掀起了了第一次浏览器大战。

4年后,1998年,IE浏览器占据了90%以上市场,网景为了生存,开源了 Netscape 的内核代码,并成立了 Mozilla 项目组,接受外界赞助,
   希望研究出更强大的浏览器,打败IE。

4年后,2002年,MOzilla项目组 推出第一款高性能的浏览器 Mozilla1.0 , 以及研究了一款beta版浏览器Phoeix,开始恢复市场占有率,并且于2004年,Phoeix商标冲突改名为Firefox,推向市场,直到2008年,市场占有率恢复至18%。

在2001年,微软发布了IE6.0,并且认为已经做到了浏览器的极致,以后只需维护和补丁,所以浏览器更名为 Microsoft Internet Explorer。

在1995年到2001年之间,参与了浏览器大战的有 Netscape、AOL、opera、雅虎浏览器等,
   都被 windows 系统绑定的IE浏览器所击败,并且IE占据了99%以上的市场,形成绝对垄断。

垄断带来了自信和自大,2002年,微软解散了IE研发小组,仅留下部分维护人员。

这时,一家叫 Google 的搜索引擎公司认为浏览器还很不完善,并且认为花大价钱支持的Firefox不足以打败IE,并且firefox的发展方向不受google控制,就联系了被解散的IE研发人员,收编至麾下,希望自主研究出新一代的高性能浏览器。

————————————————————————————————————————————————————————————————————————————————

这里简单介绍下当时浏览器的现状:
   1)1997年,js流行多个版本(netscape—Livescript,IE—JScript,ScriptEase等),都能应用于浏览器端的html操作,并且互不兼容,对当时的浏览器发展影响很大。为了解决冲突,欧洲计算机制造商协会ECMA 联系了 netscape,sun,微软,等工作组, 协商统一浏览器端脚本语言标准,并修改语言命名为:ECMAScript,将标准命名为:ECMA-262,各大浏览器商必须遵从ECMA-262规定的js语法和运行支持。(因为netscape在设计 Livescript 参考了sun公司的java,所以语法和java很像,并且后续和sun公司开展了合作,希望和java一样受欢迎,所以更名为javascript)

2)当时的浏览器软件内核主要是由 js双编译器,以及页面渲染引擎组成的,后来因为 编译器各个浏览器都差不多,所以内核后来又单指渲染排版引擎
      RenderingEngine(强大的计算能力,沟通硬件设备,将像素点显示在显示器上),基于渲染引擎的不同,则浏览器内核也不同
       例子:    
        IE—————trident 
           Netscape,Firefox—————gecko

3)当时的人 对 浏览器还是不满意的,对于当时的两大主流浏览器:

搭载Trident的IE,内核没怎么更新过,很多 w3c 和 ECMAscript 标准的部分内容不支持,
      另开发者很不爽(/0/9),非开源,致使IE在白屏时间,加载速度和动画效果以及安全性等诸多问题上被诟病。

搭载gecko的Firefox,太过贪心,妄图将邮件组、新闻组、聊天等流行应用都打包进了Firefox,导致运行时
      内存占用太大,反应迟钝,js兼容性也不是很好。

( W3C: World Wide Web Consortium 万维网联盟,规定了网页必须由三部分组成:结构,表现和行为,分别对应了3种实现标准。
       结构标准:如 页面元素的设计规则 和 元素之间关系 必须符合 xml,xhtml,html 标准,如页面标签必须是闭合标签等等。
       表现标准:规定页面元素布局,帧,从元素最外层到最内层的所有外在表现,又称为层叠样式表Cascading Style Sheets,简称css。 行为标准:包含 文档对象模型DOM 和 DOM操作(ECMAscript)两部分。
    )

就这样,windows系统的浏览器打的水深火热,而当时的另外两大系统 linux 和 Mac os 则默默发展,
   linux大多用于服务端暂且不说,苹果的 Mac os 也是用于客户端,看着微软和IE的发展,苹果看到了操作系统绑定浏览器的巨大业务场景,
于是采用了 KDE项目组的 开源KHTML引擎,并基于此,改造形成自己的内核 webkit,包含WebCore(对HTML,CSS等很多W3C规范的实现) 和 WebView(各个平台系统的的移植并提供相对应的Web接口,提供显示和操作网页元素的能力),2003年苹果推出了内嵌webkit内核的safari浏览器,伴随着Mac os推向市场。就性能而言,safari 比较轻小,界面简洁,渲染速度快,用户体验也较好,虽然safari也支持windows系统,但是更适合mac os系统,扩展规模缓慢,但是也对浏览器霸主IE发起冲锋,最终在mac操作系统上赶走了IE,IE于2005年宣布退出mac系统。

————————————————————————————————————————————————————————————————————————————————
   
   2003年,Google 和 Firefox看到了 safari 浏览器的高性能,于是也想放弃 Gecko,采用苹果开源的 webkit 内核。
   
   Firefox的团队Mozilla想了想,还是没有放弃gecko,而是想改造gecko,希望变得比 webkit 更强大。

Google和苹果达成合作协议,得到了webkit源码,并将收编的IE研发人员成立了chromium项目组,意图研发出新一代浏览器引擎,兼容各个操作系统,内置自己的Google搜索引擎,并解决当时浏览器的痛点,扩大google搜索引擎市场。
   
   在2002–2006年期间,FireFox 和 众多小浏览器如 Opera浏览器(Presto内核,开创了tab标签页)不断的优化,民间对IE的不思进取慢慢感到死心,加上对网络,软件的认识变的熟悉,开始安装使用其他浏览器,渐渐打破了IE的垄断,IE的市场占有率下降到80%以下,2005年的微软渐渐发现了不对,开始想办法解决IE的问题,但是IE开发小组被解散,对IE的改进仅仅是基于IE6的基础上,并不能对底层引擎进行大量优化。

2006年,IE发布了IE7,解决了很多问题,但是png加载导致cpu占用100%,IE死机无响应等清空还是存在,在用户体验
和性能上仍然落后其他浏览器很多。

就这样又僵持了2年,IE的市场缓缓下降,2008年,FireFox已经占有18%的市场,IE已经跌到74%以下,safari 6%。

并且在此期间,经历了接近5年研发,又使用了webkit内核的chromium项目组已经 研发出了性能较高的浏览器,chrominum浏览器(供开发者使用),开源了chrominum内核源码,并且在chrominum内核里搭载了自己的Javascript
引擎——V8引擎(c++),只要一次编译就能把js变成可执行的机器码,页面渲染速度特别快,并且在2008年北京奥运时推出第一款功能弱化后的却运行稳定的浏览器beta版,命名为 Goole Chrome Beta,可以运行在 windows ,macos 等系统,第一天 chrome就凭借公司名头 和 加载速度获取了3%的市场。

2009年3月,微软发布了 IE8,修改了部分bug,并加入了 兼容性视图 功能,以 兼容 旧版专为IE设计的网站,IE的市场占有率反而渐渐稳住,并有所回升。与此同时,google发布了 chrome 正式版本1.0,推向市场(图2)。

2010年低,chrome经过2年发展,已占有 10%市场, Firefox 占有 20%市场,IE占有60%不到,其他占有10%(如opera,bing,傲游,世界之窗,猎豹,360,搜狗,qq等等)
   
   随着网络的普及 和 硬件的发展,网页的多样性 复杂性越来越高,网页越来越”重”,一款浏览器如果不能比 网页重量增加速度发展更快的话,必将被淘汰。 IE的trident内核是基于当时的小公司Spyglass的 源码,相比于 gecko 和 khtml 天生劣势,再加上IE开发组解散,浏览器科技人才缺失,终究在技术的发展上步步落后,跟不上发展的步伐。

——————————————————————————————————————————————————————————————
   下面的数据,就是chrome新霸主的崛起之路:

2008年9月3日,beta版本发布当日,占有3%,其后跌落到1%,后续慢慢回升
   2009年正式版发布,恢复至 3.6%
   2010年2月,市场占有率 6.16%, 超越opera和safari,仅次于 firefox 和 IE
   2011年1月,市场占有率 10.70%,仅次于 firefox(20%) 和 IE(50%)不到,期间IE9发布
   2012年5月,市场占有率 33%,成为第一,超过 firefox(25%)  IE (32%) , Safari (7.12%) 
         Opera (1.72%) ,期间IE10发布
   2013年7月,市场占有率 43.12%,IE(24.53%),firefox (20.09%),期间最后一个版本IE-11发布
   。。。。。。。
   2015年4月,微软宣布window10 将不再内嵌 IE,而是内嵌 全新的edge内核的 Edge 浏览器。
   2016年1月,微软发布最后一个ie文件包,并宣布不再对任何IE版本浏览器进行维护和更新,至此,IE在发达国家彻底退出历史舞台
   2018年1月,市场占有61.41%(67%), IE (11.84%),Firefox(10.85%) ,
             Edge (4.67%),safari 4.18%。
   2018年2月,国内 chrome 为45.74%,IE(22.95%)
             IE9 — 8.19%,
             IE8 — 6.86%,
             IE11 — 5.31%,
             IE7 — 2.58%

——————————————————————————————————————————————————————————————

Chrome 一直使用 safari 的 开源webkit内核,就相当于从webkit拉了一条分支,chrome在分支上任意增加自己需要的功能,
   但是却不会合并到webkit主分支上。那么必然带来一系列的问题,比如一旦苹果提交了webkit主分支的代码,
   chrome 就要想办法在 chrominum内核 支持这些新代码,那么 倘若 新代码 和 chrominum 有冲突,怎么办呢?

Chrome作为一个强大的科技公司,肯定不可能删除自己的代码,全部依托于 webkit,所以分歧出现了。具体而言,苹果推出了 webkit2.0版本,与Chromium 的沙箱设计 存在冲突,如果兼容处理,将会使Chromium变得异常复杂。

Chrome放弃了webkit 2.0,就是放弃了与苹果的同步,为了不受限于他人,chrome 和 opera 联手,准备在 webkit 1.0的基础上,自主研发下一代引擎。
 
   2013年,chrome宣布 28版本 将采用 新引擎 blink,据说blink删除了880万行 webkit代码,同时 opera宣布放弃 prestro, 使用 blink。
    
   
   2015年,由于以前 Firefox 和 三星达成过合作,三星手机预装 Firefox,Firefox将广告收入的 10% 划给 三星,
   所以二者在此加强合作,研发新一代引擎 servo专用于手机端,目前只有些实验版本,好像还没全面投入使用。

当前浏览器 与 搭载的内核,总结如下:
 
  chorme: 统称为Chromium内核 (webkit,blink)
  Firefox: Gecko (Quantum 和 servo 还在试验阶段)
  IE: trident
  safari: webkit
  Edge: trident升级版本——edgeHTML内核
  opera: presto,blink
  360、猎豹:IE+Chrome双内核
  搜狗、遨游、QQ浏览器内核:Trident(兼容模式)+Webkit(高速模式)
  百度浏览器、世界之窗内核:IE内核
  2345浏览器内核:以前是IE内核,现在也是IE+Chrome双内核了
  UC浏览器内核:UC说是他们自己研发的U3内核,但好像还是基于Webkit和Trident
  红芯: webkit 微改造…

额外:一款浏览器 到底包含哪些模块呢?

举例: chrome

浏览器应该包含两部分, 一是 网页的解析 和 渲染相关的工作,是由 引擎 完成的。
                  二是 浏览器相关的功能,如浏览器窗口显示,url加载,安全机制ssl,缓存,书签功能,是由     
                      Chrominum内核 完成的。

————————————————————————————————————————————

二.引擎

1. HTML解析::负责HTML语言的解析

2. CSS解析:负责CSS的解析工作

3. 图片解码:支持不同编码格式的图片

4. JavaScript引擎:JavaScript语言的解析引擎,缺省的是JavaScriptCore,但是目前Google 的V8 JavaScript被广泛使用

5. 正则表达式
6. 布局:负责布局(layout)的计算和更新工作

7. 文档对象模型(DOM):DOM是W3C定义的对象模型,该部分负责DOM树及其相应的接口

8. 渲染:与渲染相关的基础设施,例如渲染树,渲染层次树等等

9. SVG:对SVG的支持

10. XML解析:XML语言的解析

11. XSLT:XSLT语言的解析执行

12. URL解析器:URL规范的解析

13. Unicode编解码器:各种编码解码工作

14. 移植:WebKit中比较大的一部分,因为WebKit要工作需要不同平台上有具体的实现,因而不同的移植有不同的实现。chromium的移植很复杂,因为其支持跨平台,所以它的移植需要在windows,linux和mac上工作。
————————————————————————————————————————————————
二. Chrominum 内核包含

1. Cookie管理器:cookie生命周期的管理

2. 历史管理器:历史记录的管理

3. 密码管理器:网页中密码登录信息管理

4. 窗口管理:多个Tab窗口的管理和切换

5. 地址栏:地址栏功能,智能地址填充与书签的协同工作

6. 安全浏览黑名单管理:安全浏览机制

7. 网络栈:与网络传输相关的工作,其有很多创新的东西
   
8. SSL/TLS:网络传输安全

9. 磁盘缓存:磁盘缓存页面及其替换策略等生命周期的管理

10. 下载管理器:管理下载相关

11. 粘帖板:clipboard的功能

12.书签管理:书签的组织和管理

13. URL解析器:同WebKit

14. Unicode编解码器:同WebKit

(前端)浏览器是什么?浏览器起源?浏览器包含哪些模块?相关推荐

  1. WEB前端开发人员须知的常见浏览器兼容问题及解决技巧

    为什么会有兼容问题? 由于浏览器种类众多,不同的浏览器其内核亦不尽相同,故各个浏览器对网页的解析有一定出入,这也是导致浏览器兼容问题出现的主要原因,我们的网页需要在主流浏览器上正常运行,就需要做好浏览 ...

  2. 【前端面试知识题】- 2. 浏览器

    序列号 内容 链接 1 前端知识面试题 - http&https(2022版) https://blog.csdn.net/qq_43061290/article/details/126651 ...

  3. 前端人员必须了解的各种浏览器

    做为一个前端人员最烦恼的就是各种浏览器的兼容性问题.从微软的IE6.IE7.IE8到火狐公司的FIREFOX以及其 他各公司的浏览器多多少少存在一定的兼容性问题.每次你在写HTML的时候是否会感到相当 ...

  4. CSS浏览器兼容性的4个解决方案:浏览器CSS样式初始化、浏览器私有属性,CSS hack语法和自动化插件...

    前端是一个苦逼的职业,不仅因为技术更新快,而且要会的东西实在太多了(如果全写出来,那真是一箩筐),更让人头疼的是,还要面临各种适配.兼容性问题. 一直以来都是头痛医头脚痛医脚,没有进行系统的梳理,整个 ...

  5. serversocket 返回浏览器图片_深入理解浏览器的缓存机制

       戳蓝字「前端技术优选」关注我们哦! 一.前言 缓存可以说是性能优化中简单高效的一种优化方式了.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽 ...

  6. 关闭浏览器网页触发事件_浏览器是如何工作的?

    作者:zhangwang 原文链接:https://zhuanlan.zhihu.com/p/47407398 可能每一个前端工程师都想要理解浏览器的工作原理. 我们希望知道从在浏览器地址栏中输入 u ...

  7. 【综合篇】浏览器的工作原理:浏览器幕后揭秘

    web(给达达前端加星标,提升前端技能) 了解浏览器是如何工作的,能够让你站在更高的角度去理解前端 浏览器的发展历程的三大路线,第一是应用程序web化,第二是web应用移动化,第三是web操作系统化. ...

  8. BOM 浏览器窗口尺寸 浏览器的弹出层 浏览器的地址栏 浏览器的历史记录 浏览器的版本信息 浏览器的常见事件 浏览器卷去的高度和宽度

    浏览器窗口尺寸 + 指的是浏览器可视窗口的尺寸 + 浏览器可能会出现滚动条=> 在一般浏览器中,滚动条算浏览器的一部分=> 在MAC中的safari浏览器上,是不算的 滚动条是隐形的 + ...

  9. 【转载】浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐

    浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐 时间:2019-03-01 15:12  来源:未知   作者:浏览器家园    浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐 好 ...

最新文章

  1. windows测试模式打开关闭
  2. Struts2中 Result类型配置详解
  3. 那些年,我们一起做过的性能优化
  4. Python之深入解析优秀的时间格式转换工具Delorean
  5. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  6. python装饰器作用和功能_python装饰器大详解
  7. zabbix mysql优化 my.cnf_zabbix数据库优化之数据库优化(二)
  8. django 1.8 官方文档翻译:14-1 按需内容处理
  9. Gerserver:发布shp文件
  10. 软件设计是怎样炼成的(3)——软件系统不是木桶型的
  11. 大话Elasticsearch常用操作和核心原理
  12. python海龟画图函数汇总
  13. 端元提取——逐次投影算法SPA与顶点成分分析VCA
  14. 汇兑损益中间科目,系统情况
  15. 什么是长连接?长连接、短连接、三次握手
  16. 调试笔记之雨过天晴多点还原软件MBR实例
  17. html显示在最上面,怎样把div显示在html的最上面?
  18. python爬虫(一)——指定小说的爬取详解
  19. 解决 ubuntu 14.04下,eclipse adt-bundle-linux 闪退的问题,最新ADT-23.0.7
  20. Nepxion Discovery

热门文章

  1. 天上人间,谁许谁一生等待 云间月上,我只期一夕一会
  2. koa--批量上传图片
  3. 百度地图 之 热力图
  4. 小程序 之 Promise
  5. 涵子来信——从苹果观望未来——谈谈想法
  6. 2022年全球市场光伏用真空泵总体规模、主要生产商、主要地区、产品和应用细分研究报告
  7. 基于python+ffmpeg的视频并发直播压力测试
  8. 己烯共聚物线性低密度聚乙烯(C6-LLDPE)行业调研报告 - 市场现状分析与发展前景预测
  9. 【笔试面试记录】测绘地理信息遥感类面试相关问题记录
  10. 2021-8-4 数据库课堂笔记Day02