杀死 IE 11

作者丨Mike Sherov
译者丨王强
“Internet Explorer 需要死掉。”
这句话已经被无数软件开发人员念叨了很久很久,但如今这句话好像真的快要成为现实了。IE11 是最后一款不支持 ES6 的主流浏览器,而 ES6 是 JavaScript 的一次重大更新。Web 业界一直都遵循渐进增强的原则,所以一般来说这也不是什么问题;但现在流行的 JS 应用程序都在使用来自 npm 包管理库的软件包,于是我们的现状变得相当奇特。一方面,我们自己的应用程序代码是用 ES6 及更高版本编写的,另一方面我们依赖的大多数模块仍然以 IE11 和 ES5 为目标,结果不仅让代码体积变大,还需要很多 polyfill。IE11 需要死掉,这样模块编写者才能默认使用更小、更快的 ES6 目标,这对我们所有人都有好处!
为了找出杀死 IE11 的最佳方法,我们需要回顾一下之前两个 IE 版本的命运是怎样终结的:它们就是 IE6 和 IE8。以史为鉴,我们就可以评估能让 IE11 落幕的策略。我们可以预测合适的路径,向大家宣传可行的做法,最终将 JS 社区从 ES5 的拖累中解放出来。
(本文小标题化用了著名英国黑暗童谣——谁杀死了知更鸟,译注)
时钟拨回 2009 年,微软在那一年遇到了麻烦。彼时 IE7 已经面世,IE8 即将发布,可 IE6 的市场份额仍然居高不下。众所周知,在那个年代 IE6 已经成为微软的一个糟糕的品牌形象,也是自它在 2001 年发布以来,被其统治多年的 Web 产业停滞不前的象征;IE6 已经明显落后于 Firefox 和 Chrome,后两者都已经开始要挑战 IE 的市场主导地位。让问题变得更加复杂的一个因素在于,许多企业级 Windows 客户端需要保持在 IE6 或 IE7 上,业界围绕着这种需求构建了众多满足他们癖好的 Web 应用。微软需要一种方法来埋葬 IE6,使企业能够维持对其新业务的需求。
微软也知道自己的用户才不会自己主动升级,所以宣布将在 2009 年 7 月通过 Windows 更新自动将 IE6 和 IE7 用户升级到 IE8。与此同时微软还为企业用户提供了两个妥协支持手段:一个是阻止自动升级的选项,另一个是允许在 IE8 中支离破碎的页面继续使用 IE7 的呈现引擎,即所谓“兼容模式”。那么微软成功了吗?资料显示,从 6 月 9 日到 7 月 9 日,IE6 的使用率一举从 24.6%下降到了 15.6%。据多家媒体报道,这一猛烈的下降势头是因为 Youtube 用网页横幅广告要求用户从 IE6 升级到其他浏览器的结果;但虽然这一举措可能说服了一些用户,谁都知道自动升级才是主要的贡献因素,并不是因为员工们催促自己的老板快点升级。
2011 年 3 月时,微软的自动升级到 IE8 的策略已经产生了显著的影响,但 IE6 的全球使用率仍然高达 12%;于是微软发起了一场营销活动,催促人们尽快放弃 IE6。向 IE6 告别的 ie6countdown.com 网站上线,跟踪其消亡步伐并向全世界宣布微软自己已经不再需要它了。微软的目标是让 IE6 的全球使用率低于 1%。然而到 2014 年 6 月这个数字仍然高达 3.8%。不过胜利就在眼前:大多数国家的使用率都已低于 1%,只有中国除外,使用率徘徊在 12.5%左右。为了使 IE6 在全球范围内的使用率最终低于 1%,必须采取措施迫使中国用户升级。
当时大多数网站都同时支持 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 的连接。接下来我们来看看 IE8 的命运,与 IE6 做个对比。
如果 IE6 的存在曾让人十分不爽,那么 IE8 简直就让人抓狂。是的,IE8 要比 IE6 先进一大截,但 IE8 却是最后一款被描述为“旧版 IE”的浏览器。IE8 仍然包含许多非标准浏览器 API、不支持 ES5、缺少大部分 HTML5 支持,并且没有内置控制台。如果你还记得 html5shiv、es5-shim、es5-sham 或者警报驱动开发这些名词,那么你肯定能理解当年的痛苦。作为参考,当 jQuery 最终放弃 IE8 时它的体积一下子减少了 30%。对于 Web 开发社区来说幸运的是,IE8 的替代方案应该不会再重蹈覆辙了。
前文提到 IE8 的自动升级为 IE6 的消亡贡献颇大,你可能会想说 IE9 的崛起也敲响了 IE8 的丧钟。不幸的是你错了。IE6 并不是一款“终端浏览器”,所以很容易通过简单的升级就走向灭亡。但一款终端浏览器必须跟随底层操作系统一起升级。可悲之处在于 IE8 是 Windows XP 的终端浏览器。也就是说如果你想从 IE8 升级到 IE9,你必须购买 Windows Vista 才行!没错,你的确可以免费获得 Firefox 或 Chrome;但是为了使用 IE9,你需要花钱才能买到 Windows Vista 或新电脑。因此 IE9 与 IE8 的灭亡没什么关系。
可以得出的更明显结论是谷歌 Chrome 杀死了 IE8。在某种程度上来说这是正确的答案。自 2008 年发布以来,Chrome 的市场份额一直在不断增长。谷歌在自家产品中到处张贴 Chrome 的下载提示,包括其主页上也是如此,而谷歌主页也恰好是当时互联网上访问量最大的页面。再结合常青树发布策略以及几项跟上主流乃至领先同行的创新,Chrome 成为了一股不可阻挡的力量,从所有市场中吞噬了大量的份额。然而这一趋势顶多能算是缓慢的量变。IE8 在 2011 年 5 月达到 29%的峰值市占率,之后直到 2016 年 9 月之前市占率都高于 1%。
PCI 安全标准委员会是负责制定帐户数据安全保护标准的机构。当你接受应用程序中的信用证书时,你可能已经完成了一次 PCI 合规性审计。2017 年 6 月 30 日 PCI SSC 宣布,从 2018 年 6 月 30 日起通过合规审计的应用必须禁用 TLS 1.0,并且强烈建议应用不要使用 TLS 1.1。从某种程度上来说,这一冲击的影响与 POODLE 这样的攻击类似,都迫使行业转向逐步加强的安全协议。许多 CDN 和网站都紧随其步伐并放弃了 TLS 1.0 和 1.1,与 POODLE 事件时他们放弃 SSLv3 的做法类似。就像 IE6 根本不支持 TLS 一样,IE8 也仅支持 TLS 1.0 和 TLS 1.1,结果也被这些网站切断了连接。历史重演,更强大的安全措施让 IE 在互联网上无处安身。但这一次,IE8 很快就落到了互联网流量的 1%以下。旧版 TLS 的淘汰可能给 IE8 的棺材钉上了最后一颗钉子,但它那时已经完蛋了。
看起来 IE8 是死在了 Chrome 手中,经历了缓慢的死亡过程;作为 XP 的默认浏览器,IE8 注定要与 XP 一起迈入夕阳的余晖中。
总结起来,我们从 IE6 和 IE8 的历史中学到了一些教训,知道了哪些策略对摧毁 IE11 来说是无济于事的。
像 IE6 倒计时那样的营销活动:据我所知,这只不过是告诉全世界微软已准备好继续前进。这种办法没什么效果。此外微软已经告全世界不要再用 IE11 了。
其他浏览器吞噬其市场份额:Chrome 已经占据了主导地位,且这一状况已维持了多年。在这个时间点上,IE11 的市占率曲线看起来很像 IE8 …也就是说,竞争对手正以缓慢而稳定的速度吃掉它的份额。我们在此是无能为力的。
安全需求提升:IE11 支持 TLS 1.2,这个版本可能会继续沿用多年。除非 TLS 1.2 爆出严重漏洞,否则其他因素都不会导致其早日消亡。此外,祈祷 TLS 中的漏洞杀死 IE11 是很阴暗的想法!但我们也要看到,提前推行新版本的大型网站可能会对整个互联网产生巨大影响。
那么我们可以做些什么来杀死 IE11?哪些策略能让我们最终从 ES5 中解放出来?怎样才能杀死最后一个真正的终端浏览器呢?
事实证明,唯一真正有效的办法是自动升级。为了做到这一点,我们知道 IE 需要是非终端浏览器,正如 IE6 那样。我们还知道替换原有浏览器需要一个安抚现有企业用户的计划,就像 IE8 的兼容模式那样。那么假设用微软 Edge 作为替代品,IE11 该怎样升级呢?
在撰写本文时,IE11 是 Windows 7、8 和 8.1 上的终端浏览器。幸运的是,微软 Edge 已经开始采用 Chromium 作为其呈现引擎了,迟早会出现在这些版本的 Windows 中。使用新引擎的 Edge 的预览版已经可用了。这样一来这些平台终于有机会从 IE11 自动升级到 Edge 了!
尽管这一前景令人兴奋,但仍然有企业客户需要保留对 IE11 的兼容性,这些企业构成了 IE11 剩余市场份额中的主要部分。微软又先人一步,已经宣布 Windows 7、8 和 8.1 上的 Edge 将具有“Internet Explorer 模式”,这将允许 IT 管理员使用安全 / 阻止列表在应该使用 IE11 的网站上使用兼容模式,而对互联网的剩余内容使用 Chromium 呈现!
那么我们还能做什么呢?虽然技术上自动升级是可行的,但微软已经宣布取消从 IE11 到 Edge 的自动更新计划。这里就是我们做文章的好机会了。
所以我们能做些什么?
首先,我们已经看到市场领导者放弃某些技术将影响浏览器市场。这里的关键在于旧技术必须被弃用(如 SSLv3),而不仅仅是建议删除(如 Youtube 的放弃 IE6 横幅广告)。虽说建议谷歌、Facebook 等巨头屏蔽 IE11 的连接好像不可思议,但一旦 Edge 开始支持旧版 Windows,这些企业就没有理由继续宽待 IE11 了。巨头的行动反过来也会给微软增加压力,让他们考虑自动升级的策略。你(是的,就是你!)可以声明一旦 Edge 开始支持旧版 Windows,就决定屏蔽 IE11,这就是投身这一运动的最佳方式!
其次,你可以询问你最喜欢的开源软件包是否以及何时计划放弃 ES5 这个编译目标。记住要礼貌,只是好奇地问一句,不要提要求。开源维护者不欠我们任何东西,但礼貌地询问他们是否要放弃 ES5 可能会打开人家的思路,促使别人开始行动!
最后,你可以使用 #killIE 主题标签来在社交媒体上呼吁自动升级策略。微软一直非常关注 Web 社区舆论,所以公开讨论这个问题,并推动社区放弃对 IE 的支持可能成为一个转折点!
如果我们成功了,我们会回过头来说“微软通过自动升级到 Edge 的做法杀死了 IE11。”最后,我们终于将停止编译到 ES5 了;最后,我们终于不用再向主流浏览器发送不必要的 polyfill 了;最后,我们的世界到处都会是 ES6 了;最后,Internet Explorer 终于死掉了。
感谢 Fred K.Schott 和 Brian Kardell 对本文的贡献。
原文链接:
https://mike.sherov.com/ie11-countdown/
今日荐文
点击下方图片即可阅读

62 岁程序员的骚操作:写个漏洞让雇主重复支付修理费用近三年,事发后赢得最高十年监禁、172 万罚款

点个在看少个 bug ?
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 确保“十五五”开好局起好步 7904822
- 2 员工“踢了一脚” 救了老板一命 7808845
- 3 故宫下雪了 7712241
- 4 2026年经济工作要这么干 7618944
- 5 村支书卖小米被小米法务投诉下架 7524447
- 6 女子买千元羽绒服穿1天变吸油服 7426698
- 7 凭煮蛋涨粉350万 “蛋神”回应爆红 7332039
- 8 不提“雪” 怎么描写雪很大 7237429
- 9 日本极右翼分子对美国“开火”了 7138618
- 10 中央经济工作会议释放哪些重要信号 7039541







InfoQ
