放弃 Internet Explorer 的商业案例

Ollie Williams - 2019年10月28日

Internet Explorer (IE) 11 与其他所有主流浏览器之间的差距正在日益扩大。为一个技术上已经过时的浏览器添加支持,会给开发带来过多的时间和挫败感。测试变得繁重。错误修复变得至关重要。多年来,开发人员一直希望放弃 IE,但现在这样做在经济上是否可行呢?

首先,我们谈论的是一个已死的浏览器

IE 的开发于 2015 年结束。微软发布了 Edge 作为其替代品,并宣布“最新的功能和平台更新将仅在 Microsoft Edge 中可用”。

在各个方面,Edge 都是对 IE 的重大改进。即使如此,Edge 在实施 Web 标准方面也远远落后,以至于微软最近透露,他们正在使用与 Google Chrome 相同的技术从头开始重建 Edge。

然而,我们现在正在讨论是否要支持 Edge 过时的古老亲戚。Internet Explorer 糟糕到公司的一位首席项目经理在微软官方博客上发表了一篇题为使用 Internet Explorer 作为默认浏览器带来的风险的文章。它是一个停留在时间里的浏览器;网络已经发展了。

Newspaper headlines from 2015
出版物自 2015 年以来就一直在预言 IE 的衰落。

浏览器的发展速度比以往任何时候都快。想想自 2015 年以来发生的一切。CSS Grid。自定义属性。IE11 将永远不会实现任何新功能。它是一个停留在时间里的浏览器;网络已经发展了。

它阻碍了机会并导致效率低下

自微软在 2015 年弃用 IE 以来,浏览器的格局也发生了巨大变化。谷歌开发者布道师 Sam Thorogood 已经编译了一个所有功能列表,这些功能除了 IE 之外都受到所有浏览器的支持。一旦 Edge 的新 Chromium 版本发布,此列表将进一步增加。总而言之,这是一个庞大的功能集,包括新的 HTML 元素、新的 CSS 属性和新的 JavaScript 功能。许多现代 JavaScript 功能可以通过使用 polyfill 和转译来与旧版浏览器兼容。但是,在过去四年中添加到 Web 的任何 CSS 功能都无法在 IE 中正常工作。

让我们更深入地了解我们今天拥有的功能以及 IE11 如何影响它们。也许最值得注意的是,在几十年的 Web 布局黑客攻击之后,我们终于有了 CSS grid,它极大地简化了响应式布局。与 CSS 自定义属性、object-fitdisplay: contents 和内在大小一起,它们都是有用的 CSS 功能示例,如果不支持它们,可能会导致网站显示损坏。在过去的五年里,我们在 CSS 中增加了一些主要功能。正是如此之多的事情的累积重量,削弱了 IE,就像一个杀手级功能一样。

虽然过去五年 Web 中的许多新增功能都与布局和样式相关,但我们在功能方面也取得了巨大的进步,例如渐进式 Web 应用。并非每个现代 API 对于需要保持向后兼容性的网站都不可用。大多数都可以包装在 if 语句中。

if ('serviceWorker' in navigator) {
// do some stuff with a service worker
} else {
  // ???
}

但是,您将为 IE 用户提供非常不同的体验。越来越多的情况是,对 IE 的支持将限制可用的工具选择,因为库和框架利用了现代功能。

例如,请查看 Evan You 关于 Vue 3 发布的此公告

新的代码库目前仅针对常青浏览器,并假定支持基本的原生 ES2015。

Vue 3 代码库使用了代理——一个无法转译的 JavaScript 功能。MobX 是另一个也依赖于代理的流行框架。这两个项目都将继续维护向后兼容的版本,但它们将缺乏放弃 IE 后获得的性能改进和 API 优点。Pika,一种很棒的新包管理方法,需要支持 JavaScript 模块,而 IE 不支持。然后是 Shadow DOM——现代 Web 平台的标准化部分,它不太可能优雅地降级。

支持它需要付出巨大的努力

在评估为像 IE11 这样的已弃用浏览器提供向后兼容性需要多少额外工作时,未实现功能的长列表只是问题的一部分。浏览器是非常复杂的软件,尽管有 Web 标准,但浏览器之间不一致。IE 长期以来一直是最容易出现错误的浏览器,与 Web 标准最不符。例如,Flexbox(开发人员自 2013 年以来一直在使用的技术)在 caniuse.com 上被列为对 IE 的部分支持,因为“存在大量错误”。

IE 还提供了迄今为止最糟糕的调试体验——只有 DevTools 的基本版本。这使得修复 IE 中的错误无疑成为开发人员最令人沮丧的部分,并且可能非常耗时——占用试图发布功能的组织的时间。

支持——确保某些功能正常工作并看起来足够好——与优化之间存在差异,在优化中,您的目标是提供尽可能最佳的体验。但这确实会产生一个潜在的令人困惑的灰色地带。关于什么构成 IE 的足够好,可能会存在不同的意见。Dave Rupert 关于 IE9 的这条评论仍然适用

什么是“损坏”的界限是模糊的。它必须在视觉上损坏到什么程度才能在功能上损坏?我寻找廉价的修复方法,但这种情况加剧了以下事实:离岸 QA 团队不遵循这种细微差别,缺陷就是缺陷,会被记录并分配到我的收件箱中,污染积压工作……无论是 polyfill、流氓 if 语句、幻影样式还是 QA 退回;与在此浏览器不断减少的细分市场上呈现此网站相关的成本和技术债务。

如果您要采取功能性支持 IE 的方法,即使不是达到极致,仍然限制您在其他所有内容之上进行 polyfill、转译、前缀和测试。

许多顶级网站已经放弃了它

Website logos

正式放弃对 IE 支持的热门网站包括YoutubeGitHubMeetupSlackZendeskTrelloAtlassianDiscordSpotifyBehanceWixHuddle、WhatsApp、Google 地球和雅虎。甚至微软自己的一些产品,例如Teams,也大大减少了对 IE 的支持。

Whats App unsupported browser screen

Twitter 显示一条横幅,通知 IE 用户他们将无法获得最佳体验,并将用户重定向到 Twitter 网站的旧版本。当我们想到推动 Web 设计最佳实践的颠覆性公司时,Monzo、Apple Music 和 Stripe 在 IE 中显示严重错误,同时放弃了警告横幅。

Stripe website viewed in Internet Explorer
Stripe 不提供任何支持或警告。

为什么新的基于 Chromium 的 Edge 浏览器很重要

在最初的急剧下降之后,IE 的使用率一直在缓慢下降。浏览器继续存在的主要原因之一是:古老的业务应用程序,它们在其他任何地方都无法工作。许多大型公司仍在使用依赖于从未标准化且现已过时的 API 的应用程序。值得庆幸的是,新的 Edge 似乎可以解决此问题。在最近的一篇帖子中,Microsoft Edge 团队解释了这些公司最终将如何能够放弃 IE

该团队设计了 Internet Explorer 模式,目标是与今天在 IE11 中工作的网站 100% 兼容。Internet Explorer 模式在视觉上看起来就像只是下一代 Microsoft Edge 的一部分……通过利用企业模式站点列表,IT 专业人员可以使下一代 Microsoft Edge 的用户能够简单地导航到依赖 IE11 的站点,并且它们将正常工作。

在使用 Beta 版几个月后,我可以说它是一款真正优秀的浏览器。我甚至敢说,它比 Google Chrome 更好?微软已经开始大力推广它。Edge 是 Windows 10 的默认浏览器。数亿台设备仍在运行旧版本的 Windows 操作系统,而这些系统上无法使用 Edge。新的基于 Chromium 的版本将为 Windows 7 和 8 提供支持。对于仍然使用旧设备和旧操作系统的用户来说,再也没有理由继续使用 IE 了。Windows 7 仍然是世界上最流行的操作系统之一,但其生命周期将于 2020 年 1 月结束,这也有助于在个人和企业升级到 Windows 10 时推动 Edge 的采用。

换句话说,现在是放弃支持的最佳时机。

性能成本

所有当前的浏览器都支持 ECMAScript 2015(最新版本的 JavaScript)——并且已经支持了一段时间。将 JavaScript 转换为旧版(更慢)版本仍然是整个行业中常见做法,但目前只有 Internet Explorer 需要这样做。此过程允许开发人员编写现代语法,使其仍然可以在 IE 中工作,但会对性能产生负面影响。Google 工程师 Philip Walton 对这个问题发表了自己的看法

更大的文件下载时间更长,但解析和评估时间也更长。当我比较我网站上的这两个版本时,旧版版本的解析/评估时间也始终大约是新版版本的的两倍。[…] 向低端移动浏览器发送大量不需要的 JavaScript 的成本可能非常高!我们(Chrome 团队)已经看到了很多次 polyfill 膨胀导致低端移动设备上网站启动时间增加数秒的情况。

可以使用差异化服务方法来解决此问题,但这会给构建工具增加少量复杂性。我不确定在查看支持 IE 所需的整体工作量时,是否值得为此费心。

另一个例子:如果您要使用现代 API,IE 需要大量的 polyfill。这通常会在此过程中向其他浏览器发送额外的、不必要的代码。另一种方法,polyfill.io,即使对于不需要 polyfill 的现代浏览器,也会增加一个额外的、阻塞的 HTTP 请求。这两种方法都会对性能造成不利影响。

至于 CSS,像 CSS 网格这样的现代功能减少了对 Bootstrap 等庞大框架的需求。如果我们必须支持 IE,我们就无法减少这些额外的负担。其他现代 CSS 属性可以以更稳定、性能更高的方式替代传统上使用 JavaScript 完成的工作。利用它们将有利于性能和成本。

谈谈钱

一个(过于简单的)计算方法是比较修复 IE 错误所需的开发人员时间成本以及解决 IE 问题导致的生产力损失与 IE 用户带来的收入。除非您是一家从 IE 中获得大量收入的大公司,否则这是一个简单的决定。对于大型公司来说,风险要高得多。例如,亚马逊规模的网站可能会从 IE 用户那里获得数千万美元的收入,即使他们只占总流量的不到 1%。

我认为,任何规模如此之大的网站都将从放弃支持中获益更多,因为这可以缩短加载时间并降低跳出率,而这两者对收入都至关重要。对于大型公司来说,问题不在于是否值得花费额外的开发时间来确保向后兼容性。**问题在于,您是否冒着通过牺牲性能和现代功能提供的机遇来降低绝大多数用户体验的风险。** 通过不鼓励开发人员关心新的浏览器功能,他们在创新和构建最佳产品方面受到了阻碍。

拥有好奇心强、求知欲旺盛的开发人员是一项非常宝贵的财富,他们会探索并跟上新技术的步伐。通过支持 IE,您实际上是在让开发人员脱离新技术。尝试跟上新技术的步伐,却发现自己无法使用某些功能,这令人沮丧。但这并不是要将开发人员体验置于用户体验之上。当您改善开发人员体验时,开发人员就能提高工作效率并发布功能——用户想要的功能。

网页开发很困难

据报道,今年早些时候,租车公司赫兹起诉埃森哲数千万美元。埃森哲是一家价值数十亿美元的财富全球 500 强公司。然而,赫兹声称,尽管价格高得惊人,但他们“从未交付过功能完善的网站或移动应用程序”。

根据The Register

赫兹提交的诉讼中最令人费解的指控之一是,埃森哲没有采用响应式设计……尽管错过了五个多月的截止日期,没有完成任何元素,并且代码中充满了错误,但埃森哲告诉赫兹,完成该项目需要额外花费 1000 万美元——这笔费用是在已经支付的 3200 万美元的基础上的。

埃森哲/赫兹事件是一个令人震惊的无能的例子,但它也让人们清醒地认识到,网页开发是一项艰巨的任务。然而,大多数公司都未能利用使开发更容易的事物。微软、谷歌、Mozilla 和苹果之所以投入大量资金开发新的浏览器功能,是有原因的。近年来浏览器取得的改进和创新扩展了 Web 平台上可以交付的内容,同时简化了开发人员的工作。

快速行动,发布产品

开发行业喜欢使用一些术语——比如敏捷颠覆式——这些术语暗示了轻量级的创新。然而,我们不是专注于发布功能并为绝大多数用户创造出色的体验,而是迎合了一个过时的旧版浏览器。我工作过的所有公司都一直在谈论技术债务。遗留代码的负担被准确地视为减缓开发人员速度的东西。**由于未能利用现代浏览器提供的功能,我们今天编写的代码在编写的那一刻就变成了遗留代码。** 通过为现代 Web 编写代码,您不仅可以提高当今的工作效率,还可以创建将来更容易维护的代码。从长远来看,这是正确的选择。

招聘和留任

一些业务利益相关者不会认为开发人员的幸福感对底线很重要。然而,招聘优秀的工程师非常困难。与其他行业相比,平均任期较短。没有什么比一天的 IE 调试更能损害开发人员的士气了。在 Mozilla 进行的一项对 76,118 名开发人员的调查中,“必须支持特定的浏览器(例如 IE11)”被评为网页开发中最令人沮丧的事情。“避免或删除在不同浏览器中无法正常工作的功能”位居第三,而跨不同浏览器进行测试则位居第四。通过最大限度地减少这些挫折,决定停止支持 IE 可以帮助招聘和留住工程师。

IE 用户仍然可以访问您的网站

我们生活在一个多设备的世界。一些用户很幸运地拥有雇主提供的电脑、个人笔记本电脑以及平板电脑。智能手机随处可见。如果 IE 用户在使用您的网站时遇到问题,他们可以在其他设备上完成交易。或者他们可以打开其他浏览器,因为 Microsoft Edge 预装在 Windows 10 上。

跨浏览器测试的现实

如果你有一个完善且严格的跨浏览器测试流程,并且始终遵循它,那么恭喜你!根据我的经验,这种情况很少见。许多公司只在 Chrome 中进行测试。通过减少跨浏览器测试的负担,可以更有可能让开发者和利益相关者真正地执行它。从经济角度来看,消除流行浏览器中的所有错误,远比迎合 IE 更值得。

你计划何时停止支持 IE?

不可避免地,你自己的分析数据将成为决定是否停止支持 IE 是否明智的决定因素。浏览器使用情况在世界各地差异巨大——从韩国的近 10% 到世界许多地区的远低于 1%。即使你认为今天对你特定的网站来说还为时过早,也要确保在新的 Microsoft Edge 发布后重新评估你的分析数据。