【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:4316413

评论

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

GaussDB(for Redis)助力《余烬风暴》实力上线,给您沉浸式魔幻体验

华为云数据库小助手

GaussDB GaussDB ( for Redis )

Flink 实践教程-进阶(11):SQL 关联:Regular Join

腾讯云大数据

flink 流计算 流计算 Oceanus

北京市东城区赵海东副区长一行莅临博睿数据参观指导

博睿数据

百度信誉保障服务架构全解析

百度Geek说

后端

龙蜥开源Plugsched:首次实现 Linux kernel 调度器热升级 | 龙蜥技术

OpenAnolis小助手

Linux 内核 龙蜥社区 Plugsched

狗尾巴的故事—数智时代的第一性原理|科创人·数智未来私董会

科创人

2022首场MASA技术团队黑客松大赛完美落幕!精彩集锦

MASA技术团队

C# .net 微软

Kubernetes官方java客户端之四:内部应用

程序员欣宸

Kubernetes client 4月月更

腾讯云CDW-ClickHouse云原生实践

腾讯云大数据

Clickhouse 云数据仓库

云效制品仓库 Packages,不限容量免费用

阿里云云效

云计算 maven 阿里云 npm 制品仓库

衡石BI产品预置明道云数据连接器

明道云

实时数仓建设

五分钟学大数据

实时计算 4月月更

透过「人月神话」,看清软件开发问题

架构精进之路

软件开发 人月神话 4月日更 4月月更

Ribbon从入门到源码解析

李子捌

微服务 SpringCloud Ribbon

恒源云(Gpushare)_如何安装包/pip加速等?技巧大放送3!

恒源云

安装 pip Ubuntu apt

Hoo虎符研究院|从多个方面了解公链Tezos和它的 Ithaca 2 升级

区块链前沿News

Hoo 虎符交易所 研究院 tezos

Flink 实践教程-入门(10):Python作业的使用

腾讯云大数据

ICDE 2022|Apache ShardingSphere:一个功能全面和可插拔的数据分片平台

SphereEx

数据库 ShardingSphere 论文 SphereEx

科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头

科创人

恒源云(Gpushare)_JupyterLab/TensorBoard使用问题?技巧大放送4!

恒源云

人工智能 深度学习 PyTorch

百度可观测系列 | 如何构建亿级指标的高可用 TSDB 存储集群?

百度开发者中心

重塑企业数字化能力,端点科技重磅发布Erda2.0

科技热闻

ffmpeg实现web在线转码

lo

4月月更

Improvements of Job Scheduler and Query Execution on Flink OLAP

Apache Flink

大数据 flink 编程 实时计算 OLAP

功能解读|快速上手 OceanBase 数据迁移服务

OceanBase 数据库

oceanbase OceanBase 开源

恒源云(Gpushare)_没有你想要的镜像?技巧大放送5!

恒源云

镜像仓库 显卡、gpu

阿里Maven仓库不限容量,免费用

阿里云云效

云计算 阿里云 npm Maven仓库 制品仓库

RabbitMQ 实现延时队列(订单定时取消为例)

Ayue、

Rabbit MQ 4月月更

打通产销对接,构建新型数智化农副产品供应链

数商云

产业互联网 数字化

2022华为软件精英挑战赛复赛名单公布,快来看看都有哪些优秀赛队晋级

科技热闻

Spring 完美导入 IDEA

阿Q说代码

spring IDEA 4月月更

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