必知!Firefox即將發(fā)生的四大巨變
譯文【51CTO.com快譯】Mozilla的野心是很難忽視的。Servo作為一款Web渲染引擎產(chǎn)品,針對現(xiàn)代化多核驅(qū)動的Web而設(shè)計。在Mozilla團(tuán)隊開發(fā)Servo項目的過程中,Rust這種令人印象深刻的新式編程語言作為一款新的子產(chǎn)品出現(xiàn)在人們面前。但是,許多人對該項目的細(xì)節(jié)尚不清楚——特別是Mozilla試圖加速什么內(nèi)容及如何加速這方面的信息。
接下來,將介紹的是Firefox引擎下發(fā)生的四個最重要的變化。這些內(nèi)容以Quantum項目中子項目的方式捆綁在一起。讓我們來了解每一個子項目對于Web開發(fā)人員和普通用戶都將意味著什么。
1. Servo
何謂Servo?它是Mozilla火狐瀏覽器的下一代布局引擎,是使用Rust語言開發(fā)的。
為什么它如此重要:Servo是最重要的引擎工具,這可以從三個方面來解釋。***,它的設(shè)計旨在利用多核CPU技術(shù),以便更快地進(jìn)行頁面內(nèi)容渲染;這樣一來,即使具有復(fù)雜布局的Web頁面也會流暢地渲染。第二,它使用Rust語言來保證內(nèi)存安全而不會犧牲速度。(沒有人會喜歡一個不穩(wěn)定的瀏覽器,但也沒誰想使用一個緩慢的瀏覽器)。第三,這個引擎的設(shè)計目的意在緩解構(gòu)建和維護(hù)火狐瀏覽器的關(guān)鍵內(nèi)核的過程,這要?dú)w功于Rust語言的高度現(xiàn)代化的軟件包管理和構(gòu)建系統(tǒng)。
因此,那些想要貢獻(xiàn)于未來版本的火狐瀏覽器的用戶或利用這些組件的用戶,可能都需要使用Rust開始加速。借助于Rust的支持社區(qū)、吸收易用性日益受到重視,這個項目應(yīng)該是不成問題的。
2. WebRender/Quantum渲染器
何謂WebRender?它是Servo的經(jīng)GPU優(yōu)化的渲染組件。
為什么它如此重要?現(xiàn)代化設(shè)備中的所有硬件,包括***的智能手機(jī),往往都裝配了GPU芯片,這樣設(shè)計的目的是想減輕渲染3D和2D圖像的繁重工作。如果實(shí)際渲染組件還是一個瓶頸(即WebRender所承擔(dān)的任務(wù)部分),那么Servo的多核Web布局引擎不會提供太大的現(xiàn)實(shí)世界速度。
表面上來看,WebRende的設(shè)計目的是為了與Servo協(xié)同工作。也就是說,它可以應(yīng)用在任何需要后端渲染的項目中,這在很大程度上類似于Servo重用作包括火狐瀏覽器在內(nèi)的項目的Web引擎。
3. Quantum Compositor
何謂Quantum Compositor?此工具的主要目的是將GPU合成工作獨(dú)立出系統(tǒng)渲染主進(jìn)程。
為什么它如此重要:根據(jù)來自Mozilla官方的消息,很多火狐瀏覽器版本崩潰的原因主要是由于與圖形驅(qū)動程序進(jìn)行了錯誤的交互作用而招致的。通過把與GPU交互的代碼重定位進(jìn)它自己的進(jìn)程中,這些崩潰就可以被控制住而不至使整個瀏覽器倒下。這也是將操作并行化的另一種方法,因?yàn)橐粋€單獨(dú)的處理合成的進(jìn)程可以在一個單獨(dú)的CPU核上運(yùn)行(如果有可用的CPU核的話)。
巧的是,蘋果公司的Chrome瀏覽器也使用類似的方法,因此像WebGL這樣具有***難度的問題也只會引發(fā)當(dāng)前Web頁上的一條警告信息而不會造成整個瀏覽器崩潰。目前,這個工具只是負(fù)責(zé)處理一個Web頁面上的組件的合成任務(wù),還沒有承擔(dān)像加速視頻播放(一次一個任務(wù))這樣的艱巨工作。
4. Quantum DOM
何謂Quantum DOM?這是一個軟件項目,通過智能處理Web頁面上的內(nèi)容支持加載和讀取Web內(nèi)容并使之盡量減少擁擠。
為什么它如此重要?大多數(shù)Web開發(fā)人員都會高度警覺甚至是增量式的變化——橫幅廣告加載,在線圖像加載,等等——都會降低Web頁面的響應(yīng)性,從而影響頁面內(nèi)容的渲染。天真的解決方案是借助多內(nèi)核技術(shù)實(shí)現(xiàn)這些操作的并行化處理,但是此方案會導(dǎo)***大地吞噬系統(tǒng)內(nèi)存。
QuantumDOM,正如Bill McCloskey在他博客上所解釋的,嘗試通過用戶空間線程而不是進(jìn)程來協(xié)作調(diào)度頁面DOM變化;這也最終導(dǎo)致可能在網(wǎng)頁自己的線程上運(yùn)行單個幀。如果處理恰當(dāng),這將允許更復(fù)雜的頁面布局,而占用更少的性能瓶頸。
上述方案最難的部分就是弄清楚哪些任務(wù)可以最有效地組合在一起。這個項目可能會持續(xù)很長一段時間才會完善起來,直到Servo成為一個標(biāo)準(zhǔn)配置項目。
原文標(biāo)題:4 big changes coming soon to Firefox,作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】