Internet Explorer 的结束

停止支持 Internet Explorer 对 Maersk.com 客户和开发者来说意味着什么。

steveworkman
steveworkman

我叫 Steve Workman,是 Maersk.com 的首席工程师。Maersk 是集成供应链物流领域的全球领导者,致力于帮助客户在世界各地移动商品长达 118 年的时间,其在线预订服务已有 20 多年的时间。自 2022 年 5 月初起,@Maersk 正式停止在其面向客户的系统上支持 Internet Explorer (IE),这是在 Microsoft 于 2022 年 6 月正式停止支持 IE 之后。这是一个重要网络时代的结束,一个新时代的开始。

我在 2018 年加入 Maersk,我的第一个项目是构建一个新的全球导航栏。它必须能够进行全面测试、易于在全球范围内进行部署和更新(无需停机)、采用移动优先、响应迅速、支持多个品牌、可配置、本地化为 11 种语言...以及支持 IE9。

2018 年,Windows 7 及其默认浏览器 IE9 仍然大受欢迎,根据统计数据计数器数据,Windows 10 和 IE11 仅在 2020 年初才达到临界水平。根据我们的数据,我们发现大量交易来自使用 IE9 或更糟糕的是兼容模式下的 IE11 的客户。这些流量明显倾向于新兴市场和 Maersk 客户群快速增长的地区。

如果导航菜单无法正常使用,就很难找到登录按钮。如果登录失败,他们就无法预订容器,而这突然又因为旧版浏览器而出现问题。

为解决这一问题,我们对导航组件以及未来的所有 Web 应用采取了渐进式增强的立场。我们会让它“正常运行”,但要实现这一点,可能存在大量的 polyfill 和限制。例如,IE 不支持 Fetch API,但我们为这些浏览器提供了可返回到 IE10 的 polyfill。对于 IE9,我们在单独的文件中对 XMLHttpRequest 调用进行了编码,以便仅在无法对 fetch 执行 polyfill 时才加载该文件。

当我们停止支持 IE9 时,当只有少数客户留下时,我们能够直接从应用程序中删除此代码,用时极少的工作量,为使用现代浏览器的用户带来最大的好处。

随着 Maersk 继续进行数字化转型,我们在 VueJS 赋能的微前端下重建了网站的许多部分。Vue 有许多功能,使其能够满足未来需求,为高级摇树优化和捆绑包优化提供了出色的预设配置,以及构建两个应用版本的现代模式:一个针对常规浏览器使用最新的 ES 模块语法,一个针对不理解 ES6 模块的旧版应用。该旧版用于 IE 等浏览器,其 gzip 压缩 polyfill 包通常比浏览器缺少的功能多出 100KB。

我们发现,我们还可以使用大多数现代 CSS 布局技术(例如 CSS 网格),这多亏 Microsoft 早在 IE10 中就已经启动了规范。在 autoprefixer 的帮助以及这篇 CSS 技巧文章的帮助下,我们能够更好地为网页的不同区域命名,从而构建了一种轻量级、适用于任何项目且极其灵活的布局系统。但也存在需要花费大量时间才能解决的兼容性问题。

我们突然又回到成本效益分析阶段,但对于任何版本的 IE,就像使用 IE9 一样,您需要进行权衡取舍,才能支持所有用户,同时也需要花费数周时间来为每个项目耗费数周的开发时间。我们相信,使用现代浏览器可为我们的客户带来更好的体验,因此当他们访问网站时,我们都不得再使用 IE。我们发现,对于养成打开 IE 以与我们互动的习惯的活跃客户来说,这一点做得非常成功。这条信息不错,但不足以说明数学问题。

随着来自爱尔兰的访问减少,Maersk 决定先跟随其他许多企业的领先地位,结束对爱尔兰的官方支持,尽管数据仍然表明我们应该为它提供支持。为什么是现在?

具有水平导航栏的网站。
包含全局导航组件的 Maersk 首页。

简而言之,Web 平台已经发展,即使有少量 polyfill,IE11 也无法完成我们所需的工作。以导航组件为例,在现代网络平台世界中,这是一个自定义元素,具有自己的封装样式,由 CSS 变量和容器查询驱动,因此它在一个组件中控制所有内容。如果没有平台组件,这些组件的样式可以从应用中完全更改,并且样式可能会泄露到其他组件或泄露给应用。您可以通过 polyfill 模拟这里的大部分功能,包括自定义元素ShadyCSSShadyDOMtemplate 元素。

在实践中,这些 polyfill 非常适合独立组件。但是,在复杂的应用中组合多个组件时,IE 会在数十秒的白色屏幕上停止运行,而 JavaScript 运行时则会尝试计算样式树 40 秒。简而言之,浏览器严重影响了用户体验。

过去,我们遇到过一些小的中断:polyfill 可能会使首次绘制时间延长半秒钟,但不会增加很多时间。情况有所不同,这些应用变得无法使用。面对现代网络平台的复杂性,Polyfill 只能发挥很多作用。

您知道自我们停止支持 IE 以来发生了什么吗?非常非常非常少因此,他们已没有收到大量的客户支持请求或负面反馈。我们的工程师对此感到非常满意,我们的应用可通过升级到 Vue 3(不支持 IE11,因为无法对代理对象进行 polyfill)和更小的软件包进行升级。全面支持 CSS 变量和可变字体,可以简化不同品牌之间的主题设置,而且能够在 Vue 的单文件组件中使用令牌,还可以降低认知复杂性,从而提供更好的开发者体验。

从客户的角度来看,IE 的使用量一直在慢慢地下降。网站尚未关闭 IE,但是随着渐进式增强功能会变成优雅降级,各种功能和应用都将停止运行。我们的技术不断进步,客户将受益匪浅 - 从网站获得更加一致的体验,因为最佳做法、无障碍功能和设计已融入到一个不断演变的基于 Lit 的设计系统中,与现在或未来的任何框架都能实现完全互操作性。

我很高兴看到公司内如何使用新的网络平台功能WebXR非常感谢 Internet Explorer,多亏了,我们现在可以免费使用网络平台。

主打图片由 Matt Botsford 提供。