最近的数据显示,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. .Net基础之3——运算符

    (3)Convert类型转换 1.类型如果相兼容的两个变量,可以使用自动类型转换或者显示类型转换. 但是如果两个类型的变量不兼容,这个时候可以使用一个叫做Convert的转换工厂进行转换. 注意:使用 ...

  2. 【Python】利用python自动发送邮件

    前言 在训练网络的过程中,需要大量的时间,虽然可以预估网络训练完成时间,但蹲点看结果着实有点不太聪明的亚子. 因此,参照师兄之前发的python利用smtp自动发邮件的代码,我作了些调整,并参照网上的 ...

  3. Ef core 如何设置主键

    在正题之前,先说明几个问题. (1)写 sql 不好吗,为什么要引入 ORM ? 总的来说由于需求的复杂性增加,引入了面向对象编程,进而有了 ORM ,ORM 使得开发人员以对象的方式表达业务逻辑.对 ...

  4. 数据库-第八章 数据库编程-8.4 ODBC编程

    ODBC编程 一.ODBC概述 二.ODBC工作原理概述 1.用户应用程序 2.ODBC驱动程序管理器 3.数据库驱动程序 4.数据源管理 5.小结 三.ODBC API基础 1.函数概述 2.句柄及 ...

  5. 完美解决报错Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'

    Failed to convert value of type 'java.lang.String' to required type 'java.util.Date' 首先这个错误的意思是 前台页面 ...

  6. echo改变字体颜色

    格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033 ...

  7. Rocket - interrupts - Xbar

    https://mp.weixin.qq.com/s/icPGf4KdSOudwuNpLxdo7w 简单介绍Xbar的实现. 1. 简单介绍 IntXbar主要用于把上游多个中断源的中断组合在一起,然 ...

  8. Java实现 LeetCode 754 到达终点数字(暴力+反向)

    754. 到达终点数字 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数 ...

  9. Java实现蓝桥杯基础练习特殊回文数

    基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...

  10. Java实现 蓝桥杯VIP 算法训练 递归求二进制表示位数

    问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001,因此位数是4. 样例输入 一个满足题目要求的输入范例. 9 样例输出 与上面的样例输入对应的 ...