最近,Twitter將它們移動前端用戶遷移到了一個新的、基于JavaScript的網絡協議棧中。在這樣做的過程中,他們闡述了移動web技術在與原生應用性能的對比中都有哪些優勢。
這條極其神秘的推特留下了許多未解之謎。最重要的是,“之前這些流量在什么上運行?” Ghallagher之后的推特解答了其中的一些謎團。
對于那些已登錄的用戶,“新的”網絡協議棧其實已經投入應用有九個月了。未登錄的用戶其實由一個不同的網絡協議棧提供服務,這個協議棧是由Scala和Closure Templates組成。當React開發者們所提倡的登錄體驗改善的時候會用回到新的協議棧。
新的基于瀏覽器的UI構建于Node.js和Express之上,Node.js和Express用于處理服務器端。應用程序就像漸進式Web應用 (Progressive Web App)一樣被構建,漸進式Web應用通過Service Workers來支持即時頁面加載、離線功能、消息推送等。目前的應用還不能支持所有這些特性,但是另一個Twitter工程師Paul Armstrong透露,這些特性將很快被支持。
后端不是運行在服務器上的React。Twitter工程師James Bellenger提到,“后端服務不是使用的反應渲染(react rendering)并且幾乎沒有路由處理”,他還補充道,“這個服務做的最難的一項處理是對json進行分詞”。在這些推特中,Bellenger透露了很多關于這項服務怎樣工作的細節。對于初學者而言,它運行在當前Node.js的長期支持版本上并且使用handlebars而不是反應渲染(react rendering)。
社區正在要求他們透露更多信息,關于他們是如何應對處理站點的大量流量的。Stuart Langridge回復道,他想“看到一條(或者更多)的動態能解釋這是怎么做到的(處理大量流量),以及期間遇到的問題等等。”
Ryan Johnson寫了一個對于Twitter的Redux存儲的獨立分析,其中有許多有趣的見解。在和InfoQ的談話中,Johnson談到,看了Twitter的實現,給了他對于技術的信心:
對于Redux,我一直關心的一個問題是,到底存儲多少數據才算多,到底能存儲多少數據?你能看到,當你滑動Twitter時或者收到新的推特時,Twitter會不斷地存儲推特數據。如果Redux能處理Twitter這么多的數據,我相信它能處理得了所有我應用在上邊的數據。
它在移動端的性能是非常出眾的。Johnson說到,“我發現移動端頁面響應的流暢讓人難以置信,在我看來,它能輕易取代原生應用。”
新的web應用能通過以下網址訪問:https://mobile.twitter.com
查看英文原文:Twitter's React-Based Mobile Web Stack Rivals Native Performance