每日最新頭條.有趣資訊

殺死 IE 11

作者丨Mike Sherov

譯者丨王強

“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/

今日薦文

獲得更多的PTT最新消息
按讚加入粉絲團