我们大家熟悉的 IE 浏览器经过更新换代,目前已经更新到 IE11,而程序员多年唠叨的“IE 必须死”如今似乎要成为现实了。本文将回顾 IE6 和 IE8 消亡的历史,预测如何更好地“干掉” IE11。
以下为译文:
“IE必须死。”
这句话多年来一直被无数的软件开发者唠叨,但是现在这句话真的要成为现实了。IE11是最后一款不支持ES6的主流浏览器,而ES6是JavaScript的一项重大更新。Web一直秉承着渐进式增强的原则,所以通常情况下这不是什么问题。但是现在一般的JS应用程序都使用来自NPM的软件包,这样我们所处的境地就比较奇怪了。虽然我们自己的程序代码是用ES6+编写的,但是我们依赖的大多数模块仍然把IE11和ES5作为目标,这就使得代码体积变大,并且需要很多的polyfill。IE11 必须死,这样模块编写者就可以默认使用小型的、更快的ES6,这对我们所有人都有好处。
为了彻底理解如何杀死IE11,我们需要回顾一下之前两款IE浏览器的命运,也就是IE6和IE8。通过研究之前杀死浏览器的策略,我们可以判断如今使IE11落幕的策略。我们可以预测并宣传我们最终采取的办法,这样可以将JS社区从ES5 的负担中解放出来。
谁“杀死”了IE6?
2009年,微软遇到了一个大麻烦。IE7已经发布,IE8正要发布,而这时IE6的市场份额还是异常得高。在这种情况下,IE6就成为微软的一个糟糕的品牌,这也是自2001年IE6发布以来其所占主导期间web停滞不前的一种象征。IE6已经明显落后于Firefox和Chrome,这两款浏览器已经开始严重剥削IE的主导市场。使这个问题变得复杂的是,许多企业的Windows客户端需要继续使用IE6或IE7,这样就构建了许多web 应用程序来满足他们的这些癖好。微软需要一种方法来埋葬IE6,使得企业能够继续支持其业务。
一号嫌疑人:自动升级到IE8
微软深知其用户不能升级系统,所以其在2009年7月宣布将通过Windows升级自动将IE6和IE7升级到IE8。与此同时,微软还为企业用户提供了两项可供支持手段:一是组织自动升级的能力,另外一个是“兼容模式”,这指的是允许在破碎的IE8页面上使用IE7的绘制引擎。那么微软成功了吗?资料显示,6月9日到7月9日,IE6的使用率一举从24.6%下降到15.6%。多家媒体报道,这次下降是由于YouTube的网页横幅要求用户将IE6升级到其他浏览器。尽管这可能说服了一些用户,但大家都知道自动升级才是这次变化的主要原因,而不是因为员工要求老板升级。
二号嫌疑人:IE6倒计时
2011年3月,自动升级到IE8已经产生了重要的影响,但是全球IE6的使用率仍高达12%,所以微软开展了一场营销活动,以获得杀死IE6的支持。向IE6告别的ie6countdown.com网站上线,跟踪其消亡的路径,并向世界宣布微软自己不再需要它了。他们的目标是全球的IE6使用率达到1%以下。截止到2014年6月,IE6的使用率仍高达3.8%,不过这已经有一丝希望了,那就是大多数国家的使用率达到1%以下,只有中国仍徘徊在12.5%。为了让全世界IE6的使用率达到1%,必须采取措施迫使中国用户升级。
三号嫌疑人:POODLE
当时大多数网站都支持SSL和TLS,这两种独立的协议用于增强https的连接,TLS是一种更加安全,更现代的协议。这一切都在2014年10月14日发生了改变,当时谷歌安全小组宣布他们发现了一种名为POODLE的新的漏洞。POODLE能够呈现出SSLv3支持的所有密码,这就意味着SSL本身就已经不安全了。像Twitter这样主要的网站和Cloudflare 等主要的CDN都禁用SSL。任何不能使用TLS的浏览器,比如IE6,都不能连接这些网站。这是对IE6的最后一击。截止到2014年11月,全球IE6的使用率为1%。
判决
可以说IE6 自动升级到IE8对IE6的使用造成了严重的影响,但是POODLE最终使得浏览器停止运行,这造成许多主流网站不能连接到IE6。下面我们将IE6和IE8进行比较,看看IE8的命运如何?
谁“杀死”了IE8?
如果说IE6的终结令人沮丧,那么IE8的消亡简直让人抓狂。是的,IE8比IE6先进了不少,但IE8被描述为最后一个被称为“旧IE”的浏览器。IE8仍然包含许多非标准浏览器API,不支持ES5,缺少大部分HTML5,并且没有内置控制台。如果你还记得html5shiv、ES5-shim、ES5-sham或警报驱动开发,那么你就能理解当年这种痛苦了。作为参考,当jQuery最终放弃IE8时,它的大小下降了30%。对于Web开发社区来说,幸运的是,IE8的替代选择给了我们希望,它终有一天不再困扰我们。
一号嫌疑人:IE9
既然IE8有助于IE6的终结,那么你可能会说IE9有助于IE8的消亡。不幸的是,你错了。对于IE6,人们一直希望它能够通过简单地升级消亡,因为它不是“终端浏览器”。终端浏览器要在底层操作系统的更新基础之上才能更新。可悲的是,IE8是Windows XP的终端浏览器。也就是说,如果你想将IE8更新到IE9,你必须购买Windows Vista。没错,你可以免费获得Firefox或Chrome,但是要想使用IE9,你必须花钱购买Windows Vista或新电脑。鉴于这点,IE9和IE8的消亡没有什么关系。
二号嫌疑人:Chrome
可以得出更加明显的一个结论是Google Chrome杀死了IE8。从某种方式来看,这是正确的答案。Chrome自2008年发布以来市场份额就一直在增长,谷歌在包括其主页上全部都贴上了Chrome下载提示,而其主页当时是互联网上访问量最大的页面。再加上常青发布策略和几项赶超当时其他浏览器所做的创新,Chrome成为了一股不可阻挡的力量,获得了大量的市场份额。然而,这顶多可以说是一种缓慢的转变。从2011年5月29%的峰值开始,直到2016年9月IE8的全球占有率保持在1%以上。
三号嫌疑人:TLS 1.0/1.1否决
PCI安全标准委员会是负责帐户数据保护安全标准的机构。如果你想从应用程序中接受信用证书,你可能已经做了一次PCI合规性审计。2017年6月30日,PCI SSC宣布,自2018年6月30日起,为了合规必须禁用TLS1.0,并且强烈建议不要使用TLS 1.1。从某种意义上说,像POODLE这样所带来的冲击,迫使行业逐步转向更强大的安全协议。许多CDN和网站随之效仿起来,并放弃了TLS1.0和1.1,这与宣布POODLE时他们放弃SSLv3的方式类似。与IE6不支持TLS一样,IE8只支持TLS 1.0和TLS 1.1,并且也被这些网站切断了连接。历史再次上演,更强大的安全措施阻止了IE在互联网上的广泛应用。但是,这次IE8已经低于互联网流量的1%。TLS的否决可能给IE8的棺材上了最后一颗钉子,但那时它已经死了。
裁决
IE8似乎要慢慢地死在Chrome手中,作为XP的默认浏览器,IE8注定要与XP一同没落。
怎样才能不杀死IE11?
总的来说,我们从IE6和IE8那里学到一些策略,这些策略可以运用到IE11中,但却无法奏效。
×像IE6倒计时的营销活动:在我看来,这只不过是告诉全世界微软减肥已经准备好继续前进,只不过没什么效果。另外,微软已经向全世界宣告不要再用IE11了。
×其他浏览器占据市场份额:Chrome已经占据了多年的主导地位。在这个时间点上,IE11的图表占有率看起来像是IE8的……也就是说,竞争对手正在以缓慢而稳定的速度吞噬它们。我们在此无能为力。
×增加安全要求:E11支持TLS1.2,在未来的多年里,它可能不会被弃用。除非TSL1.2中存在漏洞,否则不会导致其过早死亡。此外,祈祷TLS中存在杀死IE11的漏洞是不道德的想法!然而,我们已经看到,过早实行否决的大型网站可能会对整个互联网产生巨大的影响。
所以我们应该如何做才能杀死IE11呢?什么方法才能最终使我们从ES5中解放出来?什么能够杀死最后一个真正的终端浏览器?
干掉IE11!
事实证明,唯一真正起作用的是自动升级。为了实现这一点,我们认为IE需要的是非终端,正如IE6那样。我们还知道,替换浏览器需要一项计划来安抚现有的企业用户,正如兼容模式中那样。那么,假如用微软 Edge替代IE11,我们的前景会是怎样的?
在写本文时,IE11是Windows7、8和8.1上的终端浏览器。幸运的是,随着Chromium成为微软Edge的绘制引擎,Edge会出现这些版本的Windows。事实上,预览版本已经可以用了。这样,这些平台将有机会自动将IE11升级到Edge。
尽管这一前景令人兴奋,但仍然有企业顾客需要IE11的兼容性,这些企业是IE11剩余市场的一大部分。微软再次走在我们前面,并且已经宣布在Windows7,8和8.1上的Edge将会有“InternetExplorer模式”,这就使得IT管理员使用安全/阻止列表在网站上利用IE11呈现,剩下的互联网内容用Chromium呈现。
这给我们留下的是什么?尽管现在技术上是可信的,但是微软已经宣布停止IE11到Edge自动升级的计划。所有的迹象表明这是我们用IE11做的最好的尝试。
开发者还能采取哪些行动?
所以,我们能做什么?
首先,我们已经看到市场领导者放弃技术会对浏览器的使用造成一定影响。这里关键在于技术必须要弃用(比如SSLv3),并不只是建议弃用(比如YouTube的IE6横幅)。虽然建议Google、Facebook等屏蔽IE11是难以想象的,但一旦Edge支持旧版Windows,那就没有理由不去进行更新了。这也会给微软的自动升级增加压力。你(没错,就是你)可以声明一旦Edge支持旧版Windows,你就可以决定屏蔽IE11,并支持这项行动。
第二,你可以询问你最喜爱的开源软件包是否以及何时计划放弃ES5。但记住态度要好些,只是好奇地问一下,不要提要求。开源维护者不欠我们任何东西,但是礼貌地让他们放弃ES5可能有助于开启对话,并顺利实施。
最后,你可以使用#killIE这个标签在社交媒体呼吁自动升级。微软一直与Web社区密切合作,所以公开讨论这个问题,让社区放弃对IE支持的计划很可能是一个转折点!
如果我们成功了,我们会回过头来说“微软通过自动升级到Edge而杀死了IE11。”最后,我们将停止编译到ES5了,在一些情况下,全部停止编译;最后,我们将不再向浏览器发送不必要的polyfill。最后,我们每个地方都会使用ES6。这样最终,Internet Explorer会死掉。