根據網路品質自動調整放送

Milica Mihajlija
Milica Mihajlija

載入網站的體驗可能會因網路狀況而有很大差異。在網路速度快的情況下,一切通常都會順利進行,但如果您在外出時使用有限的行動數據方案和不穩定的連線,或是在咖啡店使用筆記型電腦連上速度緩慢的 Wi-Fi 網路時,情況就會有所不同。

解決這個問題的方法之一,就是根據使用者的連線品質調整您要向使用者放送的素材資源。這項功能現在可透過 Network Information API 實現,讓網頁應用程式存取使用者網路的相關資訊。

瀏覽器支援

  • Chrome:61。
  • Edge:79。
  • Firefox:不支援。
  • Safari:不支援。

資料來源

您可以透過許多方式運用這項網路資訊來改善使用者體驗:

  • 根據使用者的網路,切換高畫質和低畫質內容的放送。
  • 決定是否要預先載入資源。
  • 在使用者連線速度緩慢時,延遲上傳和下載作業。
  • 如果網路品質不佳,無法載入應用程式並使用相關功能,請啟用離線模式。
  • 提醒使用者,透過行動網路進行某些操作 (例如觀看影片) 可能會產生費用。
  • 供您在分析中使用這項功能來收集使用者的網路品質資料。

許多應用程式都已執行類似的操作。舉例來說,YouTube、Netflix 和大多數其他影片 (或視訊通話) 服務會在串流期間自動調整解析度。在 Gmail 載入時,系統會為使用者提供「載入基本 HTML (適用於連線速度較慢的情況)」的連結。

當使用者連線速度緩慢時,可用來載入 Gmail 基本 HTML 版本的連結

運作方式

navigator.connection 物件包含用戶端連線的相關資訊。表格下方的說明會說明此屬性的屬性。

屬性 說明
downlink 頻寬估算值 (以百萬位元/秒為單位)。
effectiveType 連線的有效類型,可能的值為 'slow-2g''2g''3g''4g' (涵蓋 4g 以上)。根據往返時間和下行連線速度的組合值決定。舉例來說,如果下行連線速度快,但延遲時間高,effectiveType 就會因延遲時間而降低。
onchange 當連線資訊變更時觸發的事件處理常式。
rtt 連線的預估往返延遲時間 (以毫秒為單位)。
saveData 布林值,定義使用者是否已要求減少資料用量模式。

在瀏覽器的控制台中執行它會如下所示:

Chrome 開發人員工具控制台顯示 navigator.connection 物件屬性的值

您也可以透過用戶端提示取得 effectiveType 值,並將瀏覽器的連線類型傳達給伺服器。

onchange 事件監聽器可讓您動態適應網路品質的變化。如果您因網路連線品質不佳而延遲上傳或下載作業,可在事件監聽器偵測到網路連線品質改善時,重新啟動傳輸作業。您也可以在網路品質變更時通知使用者。舉例來說,如果他們的 Wi-Fi 訊號中斷,並且連線至行動網路,這麼做可以避免意外的資料傳輸 (以及相關費用 💸)。

使用 onchange 事件監聽器的方式與其他事件監聽器相同:

navigator.connection.addEventListener('change', doSomethingOnChange);

結論

Network Information API 的潛在好處非常大,對於網路速度緩慢、需要大量頻寬的應用程式使用者來說更是如此。最重要的是,它可以用來做漸進式增強技巧。