微軟披露了Spartan中所使用的渲染引擎的細節
英文原文: Microsoft Shares Details on Spartan Rendering Engine
微軟披露了在 Spartan web 瀏覽器中所使用的新渲染引擎的更多信息,Windows 10 的桌面版本和移動設備版本將預裝該瀏覽器。
Charles Morris 是 Spartan 項目的項目經理主管,他在一篇博客帖子中詳細地解釋了該項目背后的成因、IE 瀏覽器的歷史以及未來的計劃。該項目的成因之一是為了打造一個能夠與 Chrome 和 Firefox 競爭的現代化渲染引擎,除此之外,Morris 還提到:“我們需要計劃這樣一種瀏覽器,在我們快速地引入現代化的 HTML5 特性的同時,它也能夠高度地向后兼容企業客戶的需求”。
新的渲染引擎最初是基于現有的 Trident 引擎進行開發的,該引擎中包含了向后兼容達 20 年的遺留代碼。在新的代碼分支創建之后,微軟耗費了幾個月的精力,以刪除各種不必要的代碼, 例如文檔模式和 VBScript 等等,這些特性在精益的、更現代化的引擎中已無用武之地了。但是,為了繼續支持那些針對特性的老版本 IE 所創建的企業 web 應用,新的 Spartan 瀏覽器中依然保留了陳舊的引擎。Spartan 能夠“無縫地”在兩種渲染引擎之間進行自動切換。
在 Hacker News 網站上的一篇討論中,微軟的高級 web 平臺工程師 Jacob Rossi 表示:“由于 Spartan 中移除了老版本 IE 中遺留的那些冗余部分,因此它的磁盤與內存占用都比 IE 要小”。
自從 Windows Phone 8.1 更新版本推出之后,微軟就改變了瀏覽器的用戶代理字符串(user agent),改變后的字符串會讓目標網站認為該請求是來自于某些更流行的設備的,例如 iPhone。為了確保 Spartan 中能夠獲得最好的內容展示效果,新的瀏覽器也將繼續使用這一做法,它的用戶代理字符串將被改為:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0
請注意:在新的字符串中沒有了“Trident”的身影,取而代之的是“Edge/12.0”。
在這篇帖子中,微軟表示,他們曾經討論過是否要使用開源的 WebKit 渲染引擎,但最終還是決定開發一套自己的引擎。Morris 說道:“雖然使用 WebKit 具有某些優勢,但經過進一步的調查后,我們還是認為這不是正確的方向,原因主要有兩點”。
首先,Web 的原則之一就是讓多種獨立的、并且能夠互操作的 Web 標準的實現共存,我們也認為 Web 不應該朝向單一的方向發展。其次,從整個工程所需的精力方面來看,與使用開源引擎開發全新的瀏覽器相比,如果我們能夠基于自有的引擎進行開發,就能夠更快 地為客戶推出一個專注于互操作性的引擎。
在推特上的一場對話中,用戶@sircmpwn 詢問了微軟將 Spartan 瀏覽器的代碼開源的可能性。微軟對此回應到:“近期沒有將代碼全部開源的計劃,但我們會以別的方式擁抱開放性(例如通過 http://status.modern.ie 網站)”。
IE 從版本 11 開始就設定為自動升級,在 Windows 10 中也會繼續沿用這一持續更新的設定。多年以來,由于 IE 的兼容性和“怪癖”所造成的問題一直飽受 web 開發者們的抨擊,至于 Spartan 能夠平息這些批評的聲音,還有待時間的檢驗。