Remote Browser

這裡紀錄《How the Puffin Browser Works》的閱讀心得。《How the Puffin Browser Works》這篇文章簡介瀏覽器的基本原理和架構,說明瀏覽器效能的瓶頸,並解釋 Puffin Browser 運行如此之快的原因,最後列出效能測試結果。

遠端瀏覽器

Puffin Browser 是一種遠端瀏覽器 (remote browser),是 CloudMosa Inc. 公司的產品。「遠端瀏覽器」是指利用遠端的(另一台主機上的)瀏覽器去瀏覽網站,不同於我們現在一般使用 Chrome, Firefox, IE, Edge, Safari 的「本地瀏覽器 (local browser)」這種方式。

使用遠端瀏覽器有什麼優點?(1) 安全 (2) 效能。

安全是因為透過遠端的瀏覽器去瀏覽網站,本機與網站因此有了「隔離」,這種隔離不是瀏覽器本身沙箱的隔離,而是實體機器的隔離,保護本機不受惡意軟體 (malware) 和零時差漏洞 (zero-day) 的攻擊。

效能是因為遠端機器的伺服器比使用者裝置還要好的關係,不管是 CPU 、記憶體、硬碟和網路速度,伺服器的效能通常都會好很多,當然執行速度也會快很多。

架構

先講結論,細節請參考《How the Puffin Browser Works》。Puffin Browser 把瀏覽器絕大部分的事情放在遠端伺服器上執行,僅把最後畫面配置結果 (即 layout tree) 傳回使用者的用戶端程式。

遠端伺服器執行的稱為 Puffin browser engine,而用戶端程式則稱為 Puffin browser client ,架構上主要分成這兩個部分。這樣的架構設計有幾個優點:

  1. 執行速度可以提升。由於伺服器的效能比較好,瀏覽器解析 HTML, CSS 與計算網頁排版的速度會很快。
  2. 下載資料的時間縮短。伺服器與資料中心之間的網路很快,於是 HTTP 通訊的往返時間 (round-trip time, RTT) 會很短,傳輸資料的時間也會很短,結果是擷取網頁的 HTML, CSS, JavaScript 與圖片媒體的速度會很快,加上一個網頁通常會有多個 HTTP 請求,縮短的時間讓網頁能有突破性地提升。
  3. 節省資料的傳輸量。由於僅把最後畫面配置結果傳回用戶端,可以將資料壓縮以減少資料量,在低頻寬的網路上也能提高網頁載入的速度。
  4. 提高安全性。遠端瀏覽器的架構可避免使用者受到惡意軟體和零時差漏洞的攻擊。

因此, Puffin Browser 瀏覽網頁的速度將不受使用者裝置效能的影響,我想這才是 Puffin Browser 建造遠端瀏覽器的原因,以達到「打破貧富之間的數位落差 (digital divide)」的目標。

缺點呢?在這樣的架構之下,使用者還是必須和遠端瀏覽器溝通,當網頁應用需要頻繁地與網頁互動,上述效能的優點會比較不顯著。另外,由於遠端瀏覽器的關係,像是需要安裝第三方程式的應用 (例如ActiveX, Java Applet),架構上也難以支援。不過 第三方程式的 Flash 是個例外,這是 Puffin Browser 的產品功能之一,也許當未來各瀏覽器都不支援 Flash 的時候,我們僅能使用 Puffin Browser 瀏覽 Flash 網頁!

文章中提到 CloudMosa 以水果當作產品的綽號,這點滿有趣的,應該是溝通上的需要吧。以下是 CloudMosa 所販售的水果:

  • Remote browser engine: 芒果 (Mango)
  • Browser client
    • Android: 檸檬 (Lemon)
    • iOS: 櫻桃 (Cherry)
    • Windows: 木瓜 (Papaya)
    • Linux: 樹莓 (Raspberry)
    • macOS: ?
    • Android TV: ?
    • Puffin OS: ?

提問

  1. 為何 Puffin Browser 取名為 Puffin ?
    (Puffin 是一種叫「海鸚」的海鳥,不知道瀏覽器和海鸚有什麼關係。)
  2. 為何 Puffin Browser 是基於 Chromium 基礎開發?
    (是否和授權條款有關)
  3. Puffin Browser 如何處理 JavaScript 這個部分?
    從架構上來看,JavaScript 應該是由 Puffin browser engine 全部下載完成後,再送給 Puffin browser client 執行,與畫面配置結果 (layout tree) 分開處理。
  4. Puffin Browser 如何顯示 Flash 這個部分?
    既然 Puffin browser client 知道畫面配置結果,可以將 Flash 的畫面繪製在所屬的畫面位置上, Flash 的畫面則由伺服器上的 Puffin browser engine 送出。
  5. Puffin Browser 如何處理 Video 與 Audio 呢?
    Video 與 Audio 應該是 Puffin browser client 直接連到原本的 Web 主機讀取,沒有必要透過 Puffin browser engine 讀取再轉送給 Puffin browser client。

發表留言

使用 WordPress.com 設計專業網站
立即開始使用