L o a d i n g . . .
SHIWIVI-文章

//sunny forever
while(life<end){
love++;
beAwesome :)}

    <
  • 主题:
  • + -
  • 清除背景
  • 禁用背景

Web的发展旅程

字数:9613 写于:2022-09-18
最新更新:2022-09-18 阅读本文预计花费您28分钟
了解这些历史解开了此前我心中的一些疑惑,比如:UA标识里为什么同时会有好几个内核的标识?CSS为什么需要写浏览器前缀来做兼容性?

世界线的开端

超文本(Hyper Text )

超文本:是指利用链接将非线性分布的节点上的信息联结,把各种不同空间的文字信息组织在一起形成的超级文本。它使得原先的线性文本变成可以通向四面八方的非线性文本,读者查阅文本时可以在任何一个关节点上停下来,进入其他文本,然后再点击、再进入另一文本,理论上,这个过程是可以无限重复的。从而,原先单一的文本变成了无限延伸、扩展的超级文本。

1945年,美国工程师Vannevar Bush(曼哈顿计划的主要组织者、雷神公司创始人之一)提出了一种基于静态缩微胶片页面的memex(memory extender)设备,人们可以在该设备中压缩和存储书籍、文件、通信记录及其索引,并以极快的速度对其进行检索查询。这意味着,人们不用再根据特定的程序,一步一步寻找信息,利用文本间的交叉引用链接,人们可以用非线性的方式查阅信息,由于条件所限,Vannevar Bush的思想在当时并没有变成现实,但这一开创性的信息组织方法,奠定了超文本的基础。

1960年,Ted Nelson在哈弗大学参加计算机编程课时,考虑编写一个文档系统来索引和管理他收藏的笔记,他在进入哈弗大学前曾担任电影制片人,因此他准备将电影镜头引入了该系统的设计中。所有信息都可以通过其他任何地方的链接访问,信息导航是非线性的,这取决于每个访问信息的人,人们可以从一个信息跳转到另外一则信息,就像从一个镜头切换到另外一个镜头。基于这个想法,1963年,Ted Nelson 首次提出了“超文本”的概念。

1968年,美国科学家Doug Engelbart在美国秋季联合计算机会议上展示了第一个超文本系统NLS(oN-Line System),并首次展示了鼠标、第一个图形用户界面。

万维网的诞生

1989年,工作于CERN(欧洲核子研究所)的Tim Berners Lee为查找存储在不同计算机上的信息而苦恼,不兼容的网络、磁盘、数据格式和字符编码使得人们查找信息十分困难且低效。于是,他向CERN的领导层提交了一个超文本项目提案,该提案提出建立一个用于CERN研究人员之间交流信息的系统,用以帮助处于不同网络、计算机系统、国家的研究人员共享信息和交流问题。

1990年,Tim Berners Lee开发出了构建Web所需要的三个基本技术:

  • 统一资源定位符(URL)
  • 超文本标记语言(HTML)
  • 超文本传输协议(HTTP)

同年,在同事Robert Cailliau的帮助下,Tim Berners Lee发起建立了一个名为World Wide Web (万维网)的超文本项目。1990年12月,Tim Berners Lee和他的团队开发出了世界上第一个Web浏览器(WorldWideWeb,与万维网同名),第一个Web服务器(CERN httpd),并发布了世界上第一个网站:http://info.cern.ch/,万维网就此诞生!

1994年,W3C联盟(万维网联盟)正式成立,由Tim Berners-Lee 担任W3C联盟主任,这是一个非营利性技术组织,旨在对 web 技术进行标准化,以协调服务提供商、内容供应商、实验室等各方协同工作,致力在万维网发展方向上达成共识,并起草发布W3C标准,主要包括HTML、XHTML、CSS、DOM、ECMAScript标准的规划制定。

浏览器的发展

WorldWideWeb浏览器最初只能在NeXTSTEP操作系统上使用(next公司老板是大名鼎鼎的乔布斯,后来next被苹果收购,NeXTSTEP系统和OpenStep结合,衍生出了MacOS),为了解决这个问题,Tim Berners Lee的团队使用C语言重写了WorldWideWeb的许多组件,从而创建了libwww API。

1992年4月,在Robert Cailliau的指导下,赫尔辛基理工大学的4名硕士生小组联合开发出了第一个可运行于Unix的浏览器Erwise,该项目在学生毕业后被搁置了,Tim Berners Lee前往芬兰鼓励该小组毕业后继续开发该项目,但后期由于缺少资金该项目再次被搁置。

1992年,加州大学伯克利分校学生魏培源使用Viola语言将WWW浏览器的组件组合了起来,发布了第二个可以运行于Unix系统中的浏览器ViolaWWW,这是第一个支持添加扩展功能的浏览器,该浏览器得到了CERN的推崇,成为了第一个流行于万维网中的浏览器。

1993年,美国国家超级计算应用中心(NCSA)的俩名员工Marc Andreessen和Eric Bina在接触了ViolaWWW后,为Unix的X窗口系统设计出了Mosaic浏览器,这是第一款可以显示图形界面和图片的浏览器,设计之初就考虑到了非技术用户的使用体验,由此引发了Web网络的爆炸式发展,Web在短短几个月内从鲜为人知变成了无处不在,该浏览器也很快被移植到Amiga、Apple Macintosh和Windows等平台。

内核的发展

开拓者 网景导航者

1994年4月,Mosaic浏览器的核心开发人员Marc Andreessen离开了NCSA,与几何图形发生器的发明人Jim Clark共同创办了网景公司(Netscape Communications Corporation),网景大量聘用了原有的Mosaic浏览器工程师,但由于Mosaic的版权在NCSA,于是开发团队重写了浏览器代码。

1994年11月,网景发布了大名鼎鼎的网景导航者(Netscape Navigator)浏览器1.0版本,这是全球第一款商业浏览器,由于公司目标是替代NCSA Mosaic成为全球第一的浏览器,因此将其内部代号定为了”Mozilla”,意为Mosaic杀手。1995年,网景开发出了HTTP cookie、Frame框架、SSL等一系列技术,并创建了JavaScript语言,网景导航者由于其功能更新迅速,又有新技术的加持,市场份额一度达到了86%。

意气风发的网景将目光转向了操作系统的开发,网景希望开发出一款基于浏览器的操作系统,类似于如今的Chrome OS。这引起了微软的警觉,这一跨越浏览器界限的作业系统,被微软视为是对Windows的直接威胁,微软担心网景抢占他们在操作系统和应用软件方面的市场份额。

泥石流 IE

1995年,为了对抗网景导航者,微软从Spyglass公司(Spyglass是NCSA创建的商业化公司)购买了Mosaic浏览器的源代码和许可,同年8月,微软推出了基于此开发的Internet Explorer浏览器1.0版本。IE浏览器的发布引发了“浏览器大战”,网景和微软竭力为各自的产品推陈出新,以求占据更大的市场份额。

1996年,微软推出了IE3,这是第一款支持CSS的商用浏览器。

1997年9月,微软发布了Trident内核,并推出了第一个以该内核作为引擎的浏览器 IE4。事态开始逐渐失控,微软的团队制作了一个巨大的字母”E”模型并将它放在了网景总部的草坪上。网景的团队不甘示弱,推倒了模型并放上了Mozilla的恐龙吉祥物,并写上标语”Netscape 72,Microsoft 18”以嘲讽微软IE浏览器的市场份额比网景低。

随后,微软开始不讲武德,将IE集成到了Windows中进行捆绑发行,并投给了苹果1.5亿美元,让苹果撤销之前对微软的侵权指控,附加条件是让苹果在其Macintosh上内置IE浏览器。此外,微软在授权条款中,要求主机厂商们在桌面上展示IE的图标,并不得加入Netscape,否则以涨价方式作为处罚。

微软的垄断式发行卓有成效,当人们看到打开操作系统就有开箱即用的浏览器时,很少会有人再想到网景导航者了,更何况IE是免费的而网景导航者需要付费。微软的一系列操作让IE浏览器的市场份额很快暴涨,直至2002年,IE浏览器的市场份额达到恐怖的96%,比网景的峰值还高。

过高的市场占有率开始使微软养尊处优,没有了网景这一竞争对手的压力,微软放慢了对内核的更新进程,并开始奉行一套自己的Web标准,在IE浏览器中加入了VBScript,DHTML等不遵循W3C公开标准的专属技术,以巩固自己的霸主地位,IE浏览器开始变得臃肿而笨重。由于IE浏览器垄断了市场,不少网页开发者只能迎合微软的Web标准,公开的W3C标准反而不被关注,从而衍生出了一大堆只和IE专属技术契合的网站,使得一些网站只能使用IE浏览器打开。

此外,IE由于市场占有率高,已然成为了蠕虫病毒的主要攻击目标,IE浏览器一旦被发现安全漏洞,蠕虫病毒会由于IE的普及高速传播。IE的泥石流行径为web的发展带来了难以根治的后遗症,而微软的不正当竞争行径也使之背负了多年的反垄断指控。

网景的继承 Mozilla火狐

除了微软的垄断式打压,网景后期对浏览器的错误定位也成为了网景覆灭的导火索之一。网景在与微软的“浏览器大战”中过分追求为浏览器增加特色功能,将电子邮件、新闻组件、文件编辑等功能塞入了浏览器中,并将其更名为了 Netscape Communicator4.0(网景通讯家)。过多的组件造成整个软件渲染缓慢,臃肿不堪。并且其新增的“特色”功能并没有革命性的创新,反而逐渐脱离了W3C的标准,期间曾一度创造了臭名昭著的<blink>标签。欠缺的使用体验,再加上微软的流氓式打压,网景浏览器的市场份额一落千丈。

1998年1月,在与微软的“浏览器大战”中失利后,为了挽回市场,网景宣布旗下所有软件对公众免费,并开源了Netscape Communicator4.0的源代码。与此同时,网景发布了一个全新的开源项目Mozilla,其中包含了全新的排版引擎Gecko,并建立了非正式组织Mozilla,以支持后续的Netscape Communicator开发。

1998年10月,网景宣布Netscape Communicator5.0将使用全新的Gecko引擎,这引起了Netscape开发人员的不满,因为在此之前他们对旧引擎Mariner进行了长达六个月的改进工作,而此举意味着他们此前的努力将付诸东流。网景的盈利主要依靠网景导航者及其衍生产品的收益,主要支柱遭受巨大打击,此时的网景已经摇摇欲坠,内部进行了大量人员裁剪。诸多原因直接导致Netscape Communicator5.0的发布被极大地推迟了,而此前微软发布的IE4比旧版本的网景通讯家拥有更好的性能,包括对HTML4、CSS、DOM和ECMAScript等W3C标准的支持,市场的天平进一步向微软倾斜。

1998年11月,AOL(美国在线)公司以42亿美元、免税换股的方式收购了网景通讯公司。AOL在证实微软因滥用垄断能力而败诉后(此前微软因垄断问题在和苹果等公司打官司),AOL向微软提出了索偿诉讼,指控微软在与网景的竞争中滥用垄断能力。2003年5月,微软和AOL达成和解协议,微软将向网景支付7.5亿美元,而AOL允许微软在7年无限制的使用和散布IE浏览器,AOL的这一举动带领网景走向了覆灭。

2000年11月,在推迟将近两年后,网景跳过了Netscape Communicator5.0,发布了基于Gecko引擎的Netscape 6,但此时已是IE5的天下。

2003年7月15日,AOL解散了网景公司,解雇了Gecko的开发人员,并将Gecko及其相关产品的知识产权交给了Mozilla组织,Mozilla组织接收了大量Gecko的开发人员。同一天,Mozilla基金会正式成立,其目的是保证Mozilla组织可以在没有网景以后能继续生存下去。

2004年11月,Mozilla发布了Firefox(火狐)1.0版本,起初,Firefox被命名为Phoenix,寓意网景导航者的欲火重生,但由于与一家科技公司重名而改为了Firebird,该名称又和一个数据库软件重名,最后Mozilla 将名称确定为了Firefox。

Mozilla还负责运行维护MDN开发者平台,该平台提供了大量关于HTML、CSS、JavaScript和Web API的免费文档资料,是最好的Web开发资源平台之一。

勤劳的蜜蜂 苹果safari

在safari之前,苹果Macintosh系列计算机所使用的默认浏览器为网景导航者、Cyberdog(苹果自行开发的浏览器,由于苹果经营不善该项目被裁掉)和IE。

2001年6月,苹果fork了由KDE社区(一个崇尚开源自由的软件社区)开发的开源渲染引擎KHTML和JS引擎KJS,然后利用适配器库将其移植到了苹果的Mac OS X系统上,并重命名为WebCore和JavaScriptCore。经过苹果二次开发的KHTML和KJS拥有了更为严谨的代码结构和更快的渲染速度,苹果将其命名为Webkit引擎。

2003年1月,苹果发布了首个以此为内核的safari浏览器

2005年6月,苹果开源了Webkit源代码,同年12月,添加了对SVG(矢量图)的支持

2007年,苹果开始对CSS进行拓展,使得CSS开始支持动画、过渡、2D和3D变换,并于2009年将其以草案的方式发布给了网维网联盟进行标准化,辛勤的苹果为CSS标准库提供了大量的草案和建议。

新的引领 谷歌chrome

Webkit的高效和稳定引来了谷歌的青睐,2008年9月,谷歌发布了以Webkit为引擎的Chrome浏览器,实际上,Chrome还使用了Mozilla等组织的诸多开源组件来增强性能。

2010年苹果发布了Webkit2,由于Webkit2使用的进程隔离技术与谷歌的沙箱设计存在冲突,谷歌决定在WebKit的基础上自行开发引擎。谷歌的工程师们fork了WebKit的Webcore渲染引擎,并对源代码作了大量的精简和修改,而JS引擎将谷歌自行开发。

2013年4月,谷歌发布并开源了全新的浏览器内核Blink,其名字来源于网景创建的臭名昭著的<blink>标签,谷歌的工程师戏虐的表示:”我们永远不会支持blink标签”。此外,谷歌还开发出了强悍的JavaScript解释器——V8引擎(基于Strongtalk),大大加快了chrome的JS解析速度。

随着Blink的发布,Opera等浏览器厂商纷纷宣布将转向使用Blink引擎。2015年3月,微软宣布放弃IE浏览器的开发,转而使用Microsoft Edge取代IE。2020年,微软宣布Microsoft Edge浏览器将弃用EdgeHTML转而使用Blink内核。

兢兢业业的Opear

1994年,挪威电信公司Telenor的两名员工Jon Stephenson von Tetzchner和Geir Ivarsøy开始开发Opear浏览器,后来,他们离开了Telenor并创立了Opear Software,并于1995年4月发布了Opear浏览器

2003年1月,欧朋发布就基于Presto内核的Opera 7

2010年,欧朋首创了选项卡堆叠、鼠标手势等功能,这些功能后来也被其他浏览器大量应用

2013年2月,欧朋宣布放弃presto转而使用Webkit,2013年4月,欧朋跟随谷歌转而使用Blink引擎。

2016年2月,欧朋被360公司和昆仑万维收购

欧朋浏览器自发布以来严格遵守W3C标准,老老实实地开发使用符合W3C规范的技术拓展,然而“浏览器大战”与IE的横行造就了一大堆不符合W3C标准的网页,由于Opear不支持非标准的技术栈,这些网页在Opear上往往会解析错误,Opear的兢兢业业反而为其带来了负面的用户口碑,因为用户只会将页面的不解析归咎于浏览器的问题。

2001年10月,随着WindowsXP的发布,微软对MSN通讯软件进行了重大更新,随后就有用户反馈无法使用Opear浏览器进入MSN主页。微软随即甩锅解释是因为Opear浏览器不支持W3C的XHTML技术规范导致。Opear公司反驳表示,Opear浏览器比微软更能满足W3C标准,并给出了W3C验证服务结果:微软的MSN主页使用了非标准的编码。Opear公司还制作了一份标准XHTML的页面进行还击,经过测试,网景6、Opear 等浏览器能正确访问该页面,而IE 6则无法正常显示。随后,微软开始排挤Opear用户,谷歌在发布Chrome后也曾排挤Opear,直至Opear改用Blink引擎后才有所好转。

Opear在不断遭受排挤后开始考虑支持非标准拓展,Opear公司为浏览器添加了伪装功能,允许用户将Opear伪装为IE、Firefox等浏览器以解决某些网站排挤Opear的问题,兢兢业业的欧朋由于遵守W3C标准反而吃了不少亏,这不是欺负老实人吗!!(胡万腔)

国产浏览器

中国互联网发展最快的时间刚好遇上了IE浏览器霸榜的时代,由于IE的Trident内核市场占有率较高,许多网页设计者不得不将以IE的标准作为优先考量,直接导致许多政府机构、高校、企业、银行的网站只能在IE浏览器上正常访问,而在更支持W3C标准的safari、chrome、Firefox等浏览器反而会出现加载或解析错误的情况。为此,国内的浏览器厂商们整合了IE的Trident内核与苹果的Webkit内核,美其名曰双内核并以此作为宣传浏览器的噱头(其实都是别人家的内核)。兼容模式下,浏览器会启用Trident内核以适应脱离w3c标准的垃圾网页。

浏览器UA标识

UA为User Agent的简写,指浏览器等软件在网络协议中工作时,会向服务器等对等方提交一个特征字符串,方便对方识别应用类型、操作系统、软件版本号等信息。例如:由于手机屏幕和电脑屏幕尺寸相差巨大,网站设计者一般会为手机端和电脑端设计两个不同大小的网页(或者响应式网页),当我们访问网站时,服务器会通过UA标识(或者屏幕大小)检测到我们使用的设备是手机还是电脑,从而返回相应的网页。浏览器UA的语法格式通常为:

<product> /<version> (<system-information>) <platform> (<platform-details>) <extensions>

UA也起源于著名的“浏览器之战”,当时,由于网景首先开创使用了JavaScript、Frames框架等技术,使得网景导航者浏览器的使用体验一骑绝尘,当时的网景导航者支持图片嵌入、网页嵌入等技术,而Mosaic、Samba等一些比较旧的浏览器只支持显示简单的HTML文档。为了提高网站的使用体验,网站设计者们往往希望网页拥有比较前沿的技术设计,但用户的浏览器却不一定支持网站的新颖技术。解决这一问题,UA嗅探技术诞生了。通过UA,网站会动态识别访问用户的浏览器,如:如果是网景导航者,则返回带有Frames框架技术的高级网页内容,如果为Mosaic,则只需返回简单的HTML文档即可。

起初,网景的UA长这样:

Mozilla/1.0 (win3.1)

后来,IE浏览器诞生,IE及其他浏览器逐步追上了网景的脚步,并开始支持网景的特色功能,但由于它们起步较晚,绝大多数网站仍只支持为带有Mozilla标识的浏览器返回高级网页。于是乎,微软等公司的在UA中添加了Mozilla的标识来“欺骗”Web服务器,于是,IE浏览器的标识写为了:

Mozilla/1.22 (compatible;MSIE 2.0;Windows 95)

后来,网景飞升,留下了遗孤Mozilla ,Mozilla 打造 Gecko并发布了Firefox,Firefox的UA写为了

Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

再后来,KDE社区开发出了KHTML引擎,并发布了嵌入式浏览器 Konqueror,但网页不给他们分发高级内容,他们很烦,于是他们也伪装成了Mozilla,并且表示KHTML跟Gecko一样好~

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

后来,苹果基于KHTML开发出了WebKit,他们又在KHTML的UA上套了一层娃

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

再再后来,谷歌又在WebKit基础上开发出了blink,他们也想套娃

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

于是,人人都是网景Mozilla

代码兼容性

CSS浏览器前缀

为了兼容旧版本的浏览器,对于比较新颖的CSS样式我们需要添加浏览器前缀

浏览器 内核 前缀
IE Trident -ms-
Firefox Gecko -moz-
Opera Presto -o-
Safari WebKit -webkit-
Chrome WebKit -webkit-

渲染内核

双核浏览器

对于双核浏览器,我们可以使用meta标签指定内核渲染网页,国内的双核浏览器一般是Trident内核和webkit内核,因此选其一。

使用webkit渲染网页,用于提高渲染速度 <meta name="renderer" content="webkit"> 使用IE兼容内核,用于兼容为低版本IE浏览器 <meta name="renderer" content="ie-comp"> 使用IE标准内核,用于网站用了IE专属技术 <meta name="renderer" content="ie-stand">
IE浏览器

X-UA-Compatible是IE8的一个专有属性,它用来指示IE8以上浏览器采用何种IE版本去渲染网页

常用值有:

使用最高版本的IE内核渲染 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 启用谷歌内嵌框架Chrome Frame(谷歌推出的IE插件)进行渲染,没有则使用最高版本的IE内核渲染(推荐使用) <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />

其他还支持

使用IE7内核渲染 <meta http-equiv="X-UA-Compatible" content="IE=7" /> 值可并列,该值表示IE8降级使用IE7内核渲染,若有IE9则使用IE9 <meta http-equiv="X-UA-Compatible" content="IE=7;IE=9" />
上一篇:Canvas
下一篇:基于certbot获取TLS证书
z z z z z