3918 字
9 分钟

复活吧微软边缘

其实这篇文章应该在3月9日发:这是Edge Legacy停止支持的日子。不过想到半年后就刚刚好是9月9日,这个日子更适合纪念,所以就拖到今天发了。下文的Edge都指Edge Legacy,而不是Edge Chromium。

2026年3月9日,是Edge停止支持五周年的日子。虽然说有很多梗图之前说Edge最大的作用就是下载Chrome,但是我其实还是非常喜欢Edge的。直到今天,Edge的EPUB阅读体验,平滑滚动体验以及省电体验,都是其他浏览器无法比拟的。对于阅读模式的支持,也是Edge之前比较好的一点。

严格意义上来说,Edge到现在还没有死,EdgeHTML引擎和MSHTML引擎以及最新的Webview2一样,已经永远存在于Windows的组件中,为UWP应用提供网页渲染的支持,在目前来说也没有完全退役的时间表。不过单独的浏览器已经和IE一样退出大众视野。

名称 含义 备注处
MSHTML Internet Explorer的HTML渲染引擎及其历史代码体系 EdgeHTML 从它分叉
EdgeHTML 旧版 Edge 的 HTML、CSS、DOM、布局和渲染平台 不是完整浏览器
Chakra IE9以后及旧版Edge使用的JavaScript 引擎 EdgeHTML 与 Chakra 配合,但职责不同
Microsoft Edge 2015年随Windows 10发布、基于EdgeHTML和Chakra的浏览器
Edge Chromium 基于Chromium的Edge,桌面版使用Blink和V8 继承了产品名称,但没有继续使用EdgeHTML

一切的开始

进入Windows 10时代,IE已经无法满足现代网页开发和使用的需求。尽管IE 11为IE这一“老古董”添加了许多现代化特性,但是IE还是显然的力不从心了。同时,IE造成了长尾效应也使得对MSHTML引擎的更改处处掣肘。于是,EdgeHTML诞生了。EdgeHTML采用全新的UA字符串,抛弃了IE的兼容性模式,支持现代网页标准,并且在性能上有了很大的提升;微软也(再次)有机会重新设计浏览器的UI和功能,使其更符合现代用户的需求。

2014年11月11日,微软在Windows 10预览版中推出“living Edge document mode”(生活在边缘上),同时宣布超过2000项互操作性修复和20项新平台功能。此时的Edge仍以IE的新模式出现,但已经包含后来EdgeHTML的核心思想:在不破坏起夜级网站的同时使得互联网变得摩登。

互联网多样性

当时还有一个非常重要的背景:微软想要保持浏览器的多样性(依然在这篇博客中)。

This interoperability-focused approach brought the obvious question of adopting an existing open-source rendering engine such as WebKit. While there were some advantages, upon further investigation it was not the right path forward for two important reasons. First, the Web is built on the principle of multiple independent, yet interoperable implementations of Web standards and we felt it was important to counter movement towards a monoculture on the Web. Second, given the engineering effort required, we found that we could deliver an interoperability focused engine to customers significantly faster if we started from our own engine (especially if unshackled from legacy compatibility concerns), rather than building up a new browser around an open-source engine. We will continue to look at open source and shared source models where it makes sense and look forward to sharing more details in coming posts.

当代互联网基于多个独立但互相兼容(?)的Web标准实现,我们认为我们必须抵制互联网上出现单一化趋势。

独立的浏览器内核本身就是价值。正如Gecko Quantum和Webkit的存在一样,EdgeHTML的存在也让互联网变得更加多样化。虽然我一直在攻击Safari,但是我承认不应该直接完全扼杀Safari的存在。Firefox也同理,虽然它又慢又实现的不好,但是我们仍然需要它的存在。

Browser Engine Timeline

图片源自Mozilla的Competition, Innovation, and the Future of the Web – Why Independent Browser Engines Matter。Mozilla指出,当创新建立在单一主导引擎之上时,技术和经济力量就会集中,选择范围缩小,并有可能使网络的发展方向偏离公共利益,转而服务于少数大型平台的利益。浏览器引擎多样性确保技术以人为本,而非以股东为本。

有很多文章都有写过浏览器多样性的目的,比如What is the Value of Browser Diversity?以及Browser Engine Diversity。缺乏多样性的内核实现可能会导致部分API不能得到仔细的考量,或因处于单一公司的某些商业目的,对互联网进行快速且广泛的影响。

浏览器内核在事实上决定了我们能够在互联网上看到了什么。如果世界上只有Chromium,那么谷歌将能够亲自管理亲自禁止整个互联网上的内容,这就是单一化的问题。

当Edge走向死亡的时候,Mozilla还发了一篇悼文:Goodbye, EdgeHTML

崭新的未来

2015年1月,微软公开Project Spartan浏览器;2月详细解释新内核;4月29日正式将浏览器命名为Microsoft Edge。2015年7月29日,Microsoft Edge 随Windows 10正式发布。

在2015到2018年之间,EdgeHTML的主要版本随Windows 10功能更新演进。首个正式版本通常称EdgeHTML 12,随后依次发展到EdgeHTML 18。重要工程进展包括:

Edge开始的时候非常好:优先实现其他主流浏览器和现实网站共同使用的API,而不只追求标准清单上的功能数量;使用Bing抓取的大量URL查找被大量使用的相同代码,希望能够更快的解决兼容性问题。UA的变更意味着主动放弃了IE模式,通过直接接入现代网页暴露更多问题并修复,长期目标则是实现EdgeHTML真正与其他浏览器内核能够运行相同的代码。

Edge还大量使用Windows的系统已有API,比如Media Foundation(Edge Chromium中依然有这个选项),Windows Imaging Component以及DirectWrite等,来实现更好的性能和更低的功耗

PDF使用Windows的WinRT PDF渲染器,EPUB也有一个非常优秀的渲染引擎。但是,这种操作意味着Edge与操作系统强绑定,无法被一直到其它系统,甚至Windows7。这也为最终EdgeHTML的死亡埋下了伏笔。

最平滑的平滑滚动

我不知道有没有人在Edge刚出现的时候就用过Edge。那是一种,次世代的体验。直到现在,Chrome以及开启平滑滚动的Edge Chromium都无法达到的未来。我第一次知道滚动是能够如此优雅不生硬。Edge不会只把每次滚轮输入直接转化成固定距离的位移,而是给输入添加持续一段时间的速度曲线。连续滚动时,新的输入会修改正在进行的动画,产生一种有惯性但仍然跟手的效果;Edge还会根据滚动容器的尺寸计算滚动量,同一次滚轮操作在较大的页面区域中可能移动得更远。

Edge与操作系统的DirectComposition以及Direct Manipulation紧密结合,提供了领先于业界的滚动体验。EdgeHTML的滚动是异步处理的(当然今天都是了),即使画面在执行重任务,滚动也不会存在卡顿。Edge是唯一的支持侧边栏异步滚动的浏览器。

当然,因为如此紧密的结合,这种体验也无法被简易移植到其他操作系统上。

最好用的EPUB阅读器

Reader Page

尽管在最后的Edge版本中EPUB的功能被移除(如果你想用,需要卸载KB4601383更新),但是Edge的EPUB阅读体验是最好的。与Calibre抽象卡顿的阅读体验不同,Edge有着丝滑的滚动体验,真正的完整的浏览器,以及极其优秀的UX设计。

EPUB的页面渲染是可重排的分页,而且不是基于shadowroot的方案,这提供了优雅且高性能的翻页体验,比某些只能滚动的阅读器不知道高到哪里去了。所有的页面都能用墨迹批注,支持圈画功能。

更好的字体渲染

Chromium在当时使用Skia进行字体渲染,Edge则使用Windows的DirectWrite进行字体渲染。使用Skia中硬编码的设置渲染字体会导致文本比Windows系统默认设置略微偏细。这种差异在CJK字符上更为明显。

当然,在Chrome 132之后,Chromium以及正式接受了Edge团队的patch,提供了更加接近原版Edge的字体渲染体验。

少年没有遇到少女

Edge只在(对于PC用户而言)Windows 10上提供,主要平台功能又随Windows半年功能更新(众所周知的有很多人根本不更新)交付。对推迟系统升级的企业而言,新EdgeHTML功能无法像Chrome或Firefox那样通过独立浏览器更新及时获得。于是Edge之间也存在很多版本不兼容问题。

2019年的The Verge的采访指出,企业测试和延迟部署Windows功能更新,会让其Edge长期落后。

同样的,拓展功能也不是在第一天就可用,这使得浏览器拓展社区非常的不成熟。因此,Edge的用户量一直不高。这也导致了开发人员不对Edge进行测试的恶性循环(Windows允许你使用三方浏览器,而不是和iOS以及ipadOS强制按头让你吃Safari的屎)。那么,不兼容Edge也是顺理成章了。

然后是UWP(现在在哪发财呢?)。Edge同样基于UWP构建,UWP不是一个成熟的应用开发平台,Edge需要等待UWP修复bug或添加新特性才能够实现Edge的新功能,这拖慢了Edge迭代的速度。

同时,Chrome引领下的互联网日新月异。当年第一个Edge Chromium版本是79,到今天已经是151了。Edge团队完全没有能力去跟上Chrome的更新速度。

所以Edge死了。为了提高网页兼容性脱离Windows更新的发版节奏实现跨平台,微软决定放弃EdgeHTML,转而使用Chromium内核。总之,EdgeHTML停止开发,Edge Legacy停止支持。EdgeHTML用户规模不足使得Edge生态回报偏低。采用Chromium后,微软仍可在浏览器UI、企业管理、Windows集成、隐私和服务上竞争,却能共享 Web 平台底层成本。对微软而言,这是一个商业上无比正确的决定。

三分天下

至此,浏览器内核又回到了三分天下的年代,或者就这点份额,实际上也没有进入过四分的时代。Chromium已经在事实上成为互联网的标准,Firefox就偶尔出来狗叫一下:)

当时我是最后一批升级Edge的,事实上我现在也想保留旧版Edge,但是因为我还是开了系统更新的,所以这不可能。Edge的体验对比Chrome来说确实是有差距的。在HTML没有完全加载出来之前,Edge将不会显示任何内容,始终保持白屏;同时Chrome只要能渲染就会渲染出网页,所以首屏时间Chrome显著优于Edge。更不要说谷歌一直在自家网上搞的神秘小动作了。

我为什么要给Edge招魂

其实一切的原因是Chrome在2024年决定停止对Manifest V2拓展的支持。有很多拓展使用Manifest V2,比如uBlock Origin。相关的讨论也已持续好久,基本上隔一段时间就会出现某某浏览器也停止支持V2拓展的新闻,并且搞个大新闻:某某正在杀死最受欢迎的广告屏蔽拓展,当然确实也没有错就是。

起初有很多浏览器都没有跟进,Edge Chromium也在其中。Brave,Vivaldi这些也都继续保留对V2拓展的支持;但是到2026年,Edge Chromium也已发布V2拓展的退役时间表,这是一个意料之中的事情。所有使用Chromium内核的浏览器都会遇到的问题:被谷歌卡脖子。谷歌在上游Chromium中已经移除支持,下游想要保留支持就必须进行分叉,并不断backport之后的新功能。backport是一件非常痛苦的事情,其难度会随着累计更新的变多而不断增加。今年以来AI发现的越来越多的漏洞,以及越来越频繁的更新发版也进一步加强了这种“压力”,最终我想大部分仍然追新的浏览器厂商都会选择直接跟进上游而不是分叉,某些几百年不更新还在Chrome 87的浏览器除外。

就这样,一个可能很多人都不喜欢的功能就传染了世界上近90%的浏览器,而你无能为力。XSLT也被退役了,在可见的未来,还会有很多类似的情况发生的。

如果说,除了Chromium之外,有更多的,得到良好维护的浏览器内核存在,那么事情会不会有所改变呢?也许会。Firefox至少仍然是一个兼容目标,大部分的Linux都使用Firefox作为默认浏览器。Safari也仍然是一个兼容目标,至少在iOS和iPadOS上我们仍需考虑Safari 16(这东西也随着系统更新,所以打死不更派的问题也存在)是否能够正确渲染网页。但是这两者占比实在太少了,真的太少了。

我怀念Edge的EPUB阅读体验,怀念Edge的平滑滚动体验,怀念Edge的省电体验,怀念Edge的PDF支持。现在你如果想要使用Edge,只能打开一个虚拟机,屏蔽更新再用了,这不是一个能日用的场景。令人遗憾。

本站也完全不支持在Edge上浏览,这是没有办法的事情。

讲点别的:Flash

自从Flash死后,世界上再也没有类似Flash的东西了。HTML5 + JS + CSS + Canvas + WebGL + WebGPU + WebAssembly等技术的组合,仍然不能够实现和Flash相同的功能,更不要说这些技术令人绝望的开发体验了。现代的互联网似乎不允许下一个Flash的出现,但是对于谷歌的垄断却无动于衷,这是一个很有意思的问题。

Flash提供了一套完整的开发环境和一致的使用体验,虽然其现在来看全是Bug。浏览器厂商共同淘汰Flash,但是没有给出替代Flash的解决方案;SWF播放器小而美,而个人裁剪Blink等生态则是几乎不可能的事情,每个想要利用生态的软件都必须要包含完整的电子垃圾。

讲点别的:XSLT

XSLT也正在被移除。这意味着,在不启用Pollyfill的情况下,所有RSS xml页面将无法再使用XSLT进行增强。这极大的降低了用户不小心点进RSS xml时候的体验。因此本站以及用独立的落地页做了缓冲。必竟为什么要在RSS xml中引入js呢?这太野蛮了。

讲点别的:复古网页

有不少人在做复古网页,比如群友的网站能够在IE5上完整浏览。这是一种爱好,与之相同的还有88x31图标。