速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

怎样杀死 IE11:以史为鉴

  • 2019-07-25
  • 本文字数:4271 字

    阅读完需:约 14 分钟

怎样杀死IE11:以史为鉴

(注意:本文内容比较血腥,请未成年人在家长陪同下谨慎观看,译注)


“Internet Explorer 需要死掉。”


这句话已经被无数软件开发人员念叨了很久很久,但如今这句话好像真的快要成为现实了。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 年发布以来,被其统治多年的 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月这个数字仍然高达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 的连接。接下来我们来看看 IE8 的命运,与 IE6 做个对比。

谁杀死了 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

可以得出的更明显结论是谷歌 Chrome 杀死了 IE8。在某种程度上来说这是正确的答案。自 2008 年发布以来,Chrome 的市场份额一直在不断增长。谷歌在自家产品中到处张贴 Chrome 的下载提示,包括其主页上也是如此,而谷歌主页也恰好是当时互联网上访问量最大的页面。再结合常青树发布策略以及几项跟上主流乃至领先同行的创新,Chrome 成为了一股不可阻挡的力量,从所有市场中吞噬了大量的份额。然而这一趋势顶多能算是缓慢的量变。IE8 在 2011 年 5 月达到 29%的峰值市占率,之后直到 2016 年 9 月之前市占率都高于 1%。

三号嫌疑人:TLS 1.0/1.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 一起迈入夕阳的余晖中。

无法摧毁 IE11 的策略

总结起来,我们从 IE6 和 IE8 的历史中学到了一些教训,知道了哪些策略对摧毁 IE11 来说是无济于事的。


像 IE6 倒计时那样的营销活动:据我所知,这只不过是告诉全世界微软已准备好继续前进。这种办法没什么效果。此外微软已经告全世界不要再用IE11了


其他浏览器吞噬其市场份额:Chrome 已经占据了主导地位,且这一状况已维持了多年。在这个时间点上,IE11 的市占率曲线看起来很像 IE8 …也就是说,竞争对手正以缓慢而稳定的速度吃掉它的份额。我们在此是无能为力的。


安全需求提升:IE11 支持 TLS 1.2,这个版本可能会继续沿用多年。除非 TLS 1.2 爆出严重漏洞,否则其他因素都不会导致其早日消亡。此外,祈祷 TLS 中的漏洞杀死 IE11 是很阴暗的想法!但我们也要看到,提前推行新版本的大型网站可能会对整个互联网产生巨大影响。


那么我们可以做些什么来杀死 IE11?哪些策略能让我们最终从 ES5 中解放出来?怎样才能杀死最后一个真正的终端浏览器呢?

杀死 IE11

事实证明,唯一真正有效的办法是自动升级。为了做到这一点,我们知道 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/


2019-07-25 18:4316609

评论

发布
暂无评论
发现更多内容

面试官:你确定Redis是单线程的进程吗?

Java永远的神

Java redis 程序员 架构 面试

快速构建企业级应用的开发平台

力软低代码开发平台

字节跳动数据质量动态探查及相关前端实现

字节跳动数据平台

字节跳动 数据监控 数据探查

通过 MSE 实现基于Apache APISIX的全链路灰度

阿里巴巴云原生

Apache 阿里云 微服务 云原生 灰度发布

十分钟生成影视级室内设计效果,红星美凯龙设计云如何升级传统家居行业

阿里云弹性计算

gpu 智能家居 异构计算

Vue3:显示markdown文档

空城机

markdown Vue3 7月月更

不吹不黑JAVA Stream的collect用法与原理,远比你想象的更强大

程序员小毕

Java 程序员 程序人生 stream collect

如何使用IDEA数据库工具连接TDengine?

TDengine

数据库 tdengine 时序数据库

Kafka Topic Partition Offset 这一长串都是啥?

华为云开发者联盟

后端 华为云

WhaleDI消息队列稳定性提升实践

鲸品堂

中间件

2022年5月视频用户洞察:用户使用时长增长 平台降本增效初见成效

易观分析

视频行业

零基础小白该如何选择web前端课程呢

小谷哥

C 语言入门(八)

逝缘~

7月月更

万物皆可Cassandra:HUAWEI Tag背后的神仙数据库

华为云开发者联盟

数据库 后端

软件研发团队如何管理成员工时,科学分配资源?

万事ONES

不同学习方式的web前端程序员有什么区别

小谷哥

深入揭秘 epoll 是如何实现 IO 多路复用的

C++后台开发

网络编程 epoll IO多路复用 C++后台开发 C++开发

企业遇到知识管理困境该怎么办?这里有解决方案!

Baklib

四个简单例子教你通过用户行为记录提高用户体验

观测云

字节跳动CVPR 2022多项目夺魁,获模拟人脑感知、长视频理解挑战双料冠军

字节跳动视频云技术团队

计算机视觉 图像处理 图片处理 视频理解 视频云

web前端技术学习完后怎么找工作呢

小谷哥

在互联网+的潮流中,企业客户服务该何去何从?

Baklib

互联网+ 客户服务

模块2作业

算法题每日一练---第1天:猴子分香蕉

知心宝贝

算法 前端 后端 云开发 7月月更

在web前端培训中怎么提升前端技术能力

小谷哥

数字藏品加速破圈,助力产业发现新机遇

智捷云

NFT 区块链数字藏品 数字藏品 智捷云 智捷云科技

模块七

Geek_2ce415

Redis 持久化 - RDB 源码详细分析|保姆级别分析!全网最全

领创集团Advance Intelligence Group

持久化 rdb redis 底层原理

怎么学自动化测试

和牛

测试

Mria+RLOG新架构下的EMQX 5.0如何实现1亿MQTT连接

EMQ映云科技

物联网 IoT mnesia emqx 7月月更

零基础可以自学web前端技术吗

小谷哥

怎样杀死IE11:以史为鉴_语言 & 开发_Mike Sherov_InfoQ精选文章