最近的数据显示,Chrome在2020年4月的市场份额达到了70%左右,把微软的Edge和Firefox远远甩在身后,毫无疑问,Chrome赢得了第二次游览器之战,成为新一代王者。

Chrome的第一版于2008年推出,当时微软的IE浏览器几乎占到了60%的份额,Firefox紧随其后,占据了大概30%,Chrome在2008年仅占0.3%

十年以后Chrome就主导了浏览器的市场, 这一切是怎么发生的?

我们先来回顾一下第一次浏览器之战,交战的双方是Netscape的Navigator浏览器和微软的IE, Netscape占据着先发优势,IE则背靠Windows这棵大树,双方你来我往,战事极为精彩,竞争带来了技术进步,像JavaScript、DHTML、CSS、XMLHttpRequest等各种技术层出不穷。

IE4成为这场战争的转折点,因为它被集成到了Windows当中, 开箱即用,免费,谁还会去额外下载安装收费的Netscape呢?

Netscape从此溃不成军,IE赢得了最后的胜利,从这张图中可以清楚地看出IE和Netscape之间此消彼长的势头。

IE的胜利也结束了Web浏览器的快速创新,早期的IE是积极进取的,比如AJAX的基石XMLHttpRequest就是IE率先提出来,并且发扬光大的。

可是一旦垄断形成,微软就不思进取,不想更新了,2001年微软发布IE6以后,在长达5年的时间里,IE居然没有新版本发布!

很多年轻的程序员没有经历过被IE支配的“恐惧”,那个时候开发网页,必须要保证在IE6上能够运行,否则你绝对活不了。巅峰时期IE6曾经达到过90%多的恐怖占有率, 很多国企,内部系统都是基于IE6。

虽然Netscape的浏览器战败,却没有因为死亡,Netscape把Navigator的代码开源,捐给了非盈利的Mozilla基金会。在这里Netscape几经辗转,终于在2004年涅槃重生,变身为著名的Firefox。

我现在还记得第一次看到FireFox时的感受:非常轻薄!速度飞快!作为开发人员,我迅速就抛弃了老旧不堪的IE, 把Firefox作为主力的浏览器。

Firefox也不负众望,在此后的几年中稳步上升,到2009年达到了30%多的占有率,隐隐有成为下一个霸主的潜质。

可是另外一个可怕的对手出现了,Google在2008年推出了一个叫做Chrome的浏览器,这个时候iPhone上市不到一年,Windows7刚刚面世,IE依然是最流行的浏览器。

但是Google却看到了不一样的东西,它们认为现在的互联网和10几年前大不相同了,原来只是web pages,现在到处是applications,而浏览器的本质却没有变化。Google觉得自己有责任改变, 这几幅漫画讲述了Google要推出Chrome的根本原因:

此时的Web已经进入Web2.0时代,像Google Map和GMail这样的应用迫切需要浏览器能够快速地装载页面,快速地执行JavaScript。

Google下定决心,从零开始设计一个满足现代Web应用的浏览器, 浏览器不仅仅是一个浏览网页的工具,而是一个新的平台,在此之上可以在线完成各种事情,这种深刻的洞察力将给Google Chrome带来极大的成功

Google给新浏览器定下的目标是:稳定,快速,安全,好用,开源。财大气粗的它组建了一支豪华团队来开发Chrome , 并且从Firefox挖走了好几员干将,如Ben Goodger,这可是Firefox的主力开发。

与IE和Firefox相比,Chrome的一大优势就是抛弃了遗留代码的包袱,从头开始设计,开发人员可以尽情地施展才华,他们带来了两个重要的创新:

1. 在很早的时候就确定下了“沙箱”的机制:每个Tab页都运行在自己的进程中,互不影响,充分利用多核。

2. 开发了强劲的JavaScript执行引擎 V8,让Web应用迅速地执行JavaScript代码。

2008年9月,Chrome推出Beta版,9个月后,即获得3000万用户

2009年12月,推出扩展程序库,让用户安装第三方插件,生态迅速繁荣。

2010年,推出Web 应用商店。

2012年2月,Chrome发布了Android版本, 6月推出iOS版本,此时市场份额达到30%以上

2013年,为了对第三方的恶意扩展程序进行控制,Google要求所有的扩展必须托管在应用商店中

......

一系列措施让Chrome迅速蚕食了Firefox和IE的市场,从这幅图可以清晰地看出IE(蓝色线条)的没落和Chrome(绿色线条)的崛起。

微软岂会就此认输?在这段时间内相继推出IE7, IE8, IE9,IE10 , IE 11, 但是遗留的包袱让它步履维艰,它那缓慢的速度经常成为大家调侃的对象:

到了Windows 10 ,微软另起炉灶,推出新的浏览器Edge,但也难挽败局。

微软新CEO纳德拉上台以后,一反原来封闭的形象,拥抱开源。2018年底,微软宣布将会采用Google开源的Chromium为核心来构建Edge浏览器,从此Microsoft Edge和Google Chrome算是同源了,以后发展如何,我们拭目以待。

Chome登上王位以后,对Google带来了巨大的好处,因为Google本身提供了很多极为Web的服务:GMail, Google Map , Youtube, Google Gocs, Google Earth....  现在Google把浏览器端和服务器端都掌握了,那修改一下中间的协议也不算什么了,对用户来说,反正背后的协议也看不到,只要能变快就行。

Google可以用Chrome试验各种新协议,于是我们看到它对HTTP1.1动手,做了一个叫做SPDY协议的实验,非常成功,成为了HTTP 2的基础。然后又对传输层协议开刀,搞出了一个新的传输层协议QUIC,解决了TCP了诸多问题,有望把TCP给替换掉。基于QUIC,新的HTTP协议,即HTTP/3正在制定当中。

尾声

Chrome的成功主要是因为Google深刻的洞察力,他们看到了Web未来的趋势,迅速推出产品拥抱了这种趋势。

Chrome如今占据了和当年的IE6一样的主导地位, 一些批评声音出现了,The verge有一篇报道说Google的很多Web应用都提倡“使用Chrome浏览效果最佳”, “Google Meet、Allo、YouTube TV、Google Earth 和 YouTube Studio Beta 都会阻止 Windows 10 系统的默认浏览器 Microsoft Edge 访问它们,并指引用户下载 Chrome 浏览器” ,“使用非Chrome浏览器访问google.com会被提醒三次下载Chrome。”

Chrome最终会走向何方?你觉得Chrome会像IE那样停滞不前吗?

参考资料:

https://en.wikipedia.org/wiki/Browser_wars

https://usefyi.com/chrome-history/

https://www.theverge.com/2018/1/4/16805216/google-chrome-only-sites-internet-explorer-6-web-standards

https://www.google.com/googlebooks/chrome/big_00.html

更多精彩文章,尽在码农翻身

微服务把我坑了

如何降低程序员的工资?

程序员,你得选准跑路的时间!

两年,我学会了所有的编程语言!

一直CRUD,一直996,我烦透了,我要转型

字节码万岁!

上帝托梦给我说:一切皆文件

Javascript: 一个屌丝的逆袭

Node.js :我只需要一个店小二

我是一个线程

TCP/IP之大明邮差

一个故事讲完Https

CPU 阿甘

从0到70%:Chrome上位揭秘!的更多相关文章

  1. python爬虫抓取中国最好大学排名1 清华大学 北京 94.0 100.0 97.70% 清华大学 2 北京大学

    import requests from bs4 import BeautifulSoup import bs4.element r=requests.get("http://www.zui ...

  2. 根据User Agent参数的各个字段Mozilla/5.0/4.0-AppleWebKit/Chrome/Safari/Firefox/Opera/MSIE来确定/判断客户端使用什么浏览器

    下面给你一一解答以及给你介绍: //Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like ...

  3. Dynamics CRM9.0更新了Chrome后菜单按钮变形

    前段时间Chorme更新后Dynamics CRM9.0的系统菜单样式变的很难看 具体修改方法如下: 找到Dynamics CRM安装目录C:\Program Files\Microsoft Dyna ...

  4. Selenium对浏览器支持的版本【2019/10/25更新】

    最新的selenium与几种常用浏览器的版本兼容情况:(以下驱动,点击直接跳转官方下载地址) 尽量选择最新版本-1的浏览器,比如最新的是60,那就使用59.(建议Chrome更新至72+版本.Fire ...

  5. google chrome浏览器 程序无法启动并行配置不正确

    启动电脑后打开chrome弹出如下信息: 系统:win7 进入chrome的安装路径 C:\Program Files (x86)\Google\Chrome\Application 两个版本文件夹, ...

  6. 【原创】原来你竟然是这样的Chrome?!Firefox笑而不语

    书接上文 上一篇文章<[原创]用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!>,我们对比了不同浏览器下FineUIPro一个页 ...

  7. C# extract multiples from web pages based on OpenQA.Selenium.Chrome and ChromeDriver

    1.Install latest Chrome,Selenium.WebDriver, ChromeDriver Selenium.WebDriver 3.141.0; Selenium.WebDri ...

  8. JavaScript深入浅出第5课:Chrome是如何成功的?

    摘要: Chrome改变世界. <JavaScript深入浅出>系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函数是一 ...

  9. js导出execl 兼容ie Chrome Firefox各种主流浏览器(js export execl)

    第一种导出table布局的表格 1 <html> 2 3 <head> 4 <meta charset="utf-8"> 5 <scrip ...

随机推荐

  1. 玩转Nginx location配置

    原文链接:https://mp.weixin.qq.com/s/kaEtfmX9bVdKfCVY6gbOsQ 建议点击原文链接查看 nginx是一个跨平台的web服务器, 基于事件驱动的架构并发处理百 ...

  2. 干货 | Kafka 内核知识梳理,附思维导图

    前面我们已经分享过几篇Kafka的文章,最近简单梳理了下Kafka内核相关的知识,涵盖了Kafka架构总结,副本机制,控制器,高水位机制,日志或消息存储,消息发送与消费机制等方面知识.文末含对应的Ka ...

  3. Python - 常用的PyCharm的快捷键和使用场景介绍

    关于PyCharm的快捷键,由于数量众多,差不多有100个,相信几乎没有人会记住所有,每个人都会有自己顺手的几个,这里我将自己用着顺手,不别扭的快捷键分享出来,同时分享在哪里可以找到所有的快捷键. 一 ...

  4. Robot Framework(1)- 入门介绍

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html RF 的介绍 R ...

  5. 微信小程序初探--写个扫雷分享给你玩

    闲暇里,想学一下微信小程序, 于是,用微信小程序原生做了个扫雷玩. 以下略作总结,分享给大家. 微信里下拉,输入[mini计算器], 看到这个图标的就是了: 说好的扫雷,怎么变成计算器了?原因后面解释 ...

  6. React Router简单Demo

    简介 react router是使用react的时候首选的一个路由工具. 安装 react router包含react-router,react-router-dom和react-router-nat ...

  7. 看了这篇,我确定你已经彻底搞懂Java的继承了

    遇到认真的读者是作者的一种幸运,真的,上一篇接口推送后,有好几个读者留言说,"二哥,你有一处内容需要修正,应该是接口中不能有 private 和 protected 修饰的方法." ...

  8. 05 . 前端之BootStrap

    BootStrap简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML.CSS.JavaScript 开发的简洁.直观.强悍的前端开 ...

  9. Jupyternotebook添加c++核心支持的配置过程

    一.环境:虚拟机:(1)系统:centos7.5_1804(64bit)版本(2)软件环境:git.python3.5.3.Jupyter4.4.0二.下载安装脚本:资源及安装说明:https://g ...

  10. JAVASE(八) 数组: 一维数组、二维数组、动态数组、静态数组

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.一维数组 1.1 数组的声明和初始化声明方式: String str[]; //不建议使用 Stri ...