瞭解低頻寬和高延遲

請務必瞭解在連線不佳或不穩定時,使用應用程式或網站的體驗,並據此建構。您可以使用多種工具。

在低頻寬和高延遲的情況下測試

越來越多使用者透過行動裝置瀏覽網頁。即使在家, 許多人也捨棄固定寬頻,改用行動網路。

在這種情況下,請務必瞭解連線能力不佳或不穩定時,使用應用程式或網站的體驗。您可以使用各種軟體工具,模擬低頻寬和高延遲。

模擬網路節流

建構或更新網站時,您必須確保網站在各種連線條件下都能提供足夠的效能。有幾種工具可以派上用場。

瀏覽器工具

Chrome 開發人員工具可讓您使用「網路」面板中的預設或自訂設定,以各種上傳/下載速度和封包往返時間測試網站。如要瞭解基本概念,請參閱「開始分析網路效能」。

Chrome 開發人員工具節流

系統工具

Network Link Conditioner 是 Mac 上的偏好設定面板,只要安裝 Xcode 的硬體 IO 工具即可使用:

Mac Network Link Conditioner 控制台

Mac Network Link Conditioner 設定

Mac Network Link Conditioner 自訂設定

裝置模擬

Android Emulator 可讓您在 Android 上執行應用程式 (包括網路瀏覽器和混合式網頁應用程式) 時,模擬各種網路狀況:

Android Emulator

Android Emulator 設定

如果是 iPhone,可以使用 Network Link Conditioner 模擬網路不佳的情況 (請參閱上文)。

從不同位置和網路進行測試

連線能力效能取決於伺服器位置和網路類型。

WebPagetest 是一項線上服務,可讓您使用各種網路和主機位置,為網站執行一組效能測試。舉例來說,您可以透過印度伺服器在 2G 網路上試用網站,或透過美國某個城市的有線網路試用網站。

WebPagetest 設定

選取位置,然後在進階設定中選取連線類型。您甚至可以使用指令碼 (例如登入網站) 或 RESTful API 自動執行測試。這有助於將 Connectivity Tests 納入建構程序或效能記錄。

Fiddler 支援透過 GeoEdge 進行全域 Proxy,且其自訂規則可用於模擬數據機速度:

Fiddler Proxy

在受損網路上測試

軟體和硬體 Proxy 可讓您模擬有問題的行動網路狀況,例如頻寬節流、封包延遲和隨機封包遺失。共用 Proxy 或受損網路可讓開發人員團隊在工作流程中納入實際網路測試。

Facebook 的擴增流量控制 (ATC) 是一組 BSD 授權的應用程式,可用於調整流量及模擬受損的網路狀況:

Facebook 的 Augmented Traffic Control

Facebook 甚至推出 2G Tuesdays,瞭解 2G 使用者如何使用自家產品。每到星期二,員工就會看到彈出式視窗,讓他們選擇模擬 2G 連線。

Charles HTTP/HTTPS Proxy 可用於調整頻寬和延遲時間。Charles 是商用軟體,但提供免費試用。

Charles Proxy 頻寬和延遲時間設定

如要進一步瞭解 Charles,請前往 codewithchris.com。

處理不穩定的連線和「假 Wi-Fi」

什麼是 Lie-Fi?

「lie-fi」一詞至少可追溯至 2008 年 (當時的手機外觀如這張圖所示),指的是與實際情況不符的連線能力。瀏覽器會表現得像是有連線能力,但實際上卻沒有。

如果誤判連線狀態,瀏覽器 (或 JavaScript) 會持續嘗試擷取資源,而不是放棄並選擇合理的備用方案,這可能會導致使用者體驗不佳。Lie-fi 實際上可能比離線更糟;至少如果裝置確定離線,JavaScript 可以採取適當的規避動作。

隨著越來越多人從固定寬頻轉向行動網路,Lie-fi 可能會成為更嚴重的問題。根據最近的美國普查資料,固定寬頻的使用率正在下降。下圖顯示 2015 年與 2013 年在家使用行動網際網路的情況:

美國人口普查資料圖表,顯示從固定寬頻轉向行動網路的趨勢,尤其是低收入家庭

使用逾時機制處理間歇性連線問題

過去,我們曾使用XHR 的駭客方法來測試間歇性連線能力,但 Service Worker 可提供更可靠的方法來設定網路逾時。只要使用 Workbox,並加入幾行程式碼,即可達成這個目標:

workboxSW.router.registerRoute(
  '/path/to/image',
  workboxSW.strategies.networkFirst({networkTimeoutSeconds: 3}),
);

如要進一步瞭解 Workbox,請觀看 Jeff Posnick 在 Chrome 開發人員高峰會的演講:Workbox:彈性的 PWA 程式庫。

Fetch API 也正在開發逾時功能,而 Streams API 則應有助於最佳化內容上傳,並避免單一要求。Jake Archibald 在「Supercharging page load」中,詳細說明如何解決 Lie-Fi 問題。

意見回饋