文章
什麼是客戶端處理?
大多數檔案工具的工作方式是將文件傳送到遠端電腦,由其完成繁重處理後再傳回結果。客戶端處理顛覆了這一模式:由你自己的瀏覽器完成工作,檔案永遠不會離開你的裝置。
工具工作的兩種方式:你的機器,還是他們的機器
伺服器端處理中,上傳檔案有點像送去寄存乾洗:你交出去,遠端機器處理,稍後取回結果。客戶端處理更像在家自己洗衣服。工具在你的瀏覽器分頁內運行,從記憶體中讀取檔案、進行處理,然後將輸出交還給你,整個過程檔案都不會接觸任何網路連線。網站只需交付一次處理程式碼,之後一切都在你這端運行。
WebAssembly 為瀏覽器帶來了什麼
很長一段時間裡,瀏覽器只能執行 JavaScript,它雖然適合建構介面,但對於重新編碼影片或對大型圖片套用壓縮等任務來說太慢了。WebAssembly(通常縮寫為 WASM)改變了這一切。它是一種緊湊的二進位格式,瀏覽器可以以接近原生的速度執行,因此用 C 或 C++ 撰寫的程式碼可以編譯為 WASM 並在瀏覽器分頁內運行,無需任何外掛程式。驅動桌面軟體的相同編解碼器和壓縮函式庫如今可以直接在頁面中運行。JavaScript 和 WebAssembly 協同工作:JavaScript 負責介面和調度,WASM 負責高強度運算。
處理任務期間實際發生了什麼
當你將檔案拖放到客戶端工具上時,頁面會載入一個小型處理引擎(通常是 WASM 模組,如果尚未載入的話),然後透過 JavaScript 將檔案傳遞給它。實際處理通常在名為 Web Worker 的背景執行緒上運行,這樣在處理進行時瀏覽器介面依然保持回應。在此過程中你隨時可以開啟瀏覽器的網路標籤頁,不會出現攜帶你檔案的請求。輸出在記憶體中組裝完成後,以下載形式提供給你。
你應該了解的真實取捨
第一次使用依賴大型 WASM 引擎的工具時,瀏覽器會下載並快取該引擎。之後再使用時跳過下載,可完全離線運行。由於處理在你的裝置上執行,超大型檔案所需的時間取決於你的 CPU 和可用記憶體,一些繁重任務資料中心可能會完成得更快。但你換來的是真實的價值:檔案永不傳輸、在慢速連線下無需等待上傳,而且第一次載入後工具在沒有網路的情況下也能繼續工作。
本文涉及的工具
常見問題
客戶端處理是否自動意味著我的資料是私密的?
客戶端意味著檔案在設計上不會被傳送到伺服器,這正是隱私保護得以實現的原因。你可以自行確認:在處理檔案時開啟瀏覽器開發者工具的網路標籤頁,不應出現攜帶你檔案資料的外送請求。儘管如此,核實工具是否真正如此運作,而不是僅僅信任標籤聲明,仍然是明智之舉。
為什麼工具第一次使用有時會比較慢?
瀏覽器需要在首次使用時下載處理引擎(WASM 模組),這可能需要幾秒鐘,視其大小和你的網路連線而定。之後引擎會快取到本地,後續會話立即啟動,工具也能在離線狀態下正常工作。