載入網站的體驗可能會因網路狀況而有很大差異。在網路速度快的情況下,一切通常都會順利進行,但如果您在外出時使用有限的行動數據方案和不穩定的連線,或是在咖啡店使用筆記型電腦連上速度緩慢的 Wi-Fi 網路時,情況就會有所不同。
解決這個問題的方法之一,就是根據使用者的連線品質調整您要向使用者放送的素材資源。這項功能現在可透過 Network Information API 實現,讓網頁應用程式存取使用者網路的相關資訊。
用量
您可以透過許多方式運用這項網路資訊來改善使用者體驗:
- 根據使用者的網路,切換高畫質和低畫質內容的放送。
- 決定是否要預先載入資源。
- 在使用者連線速度緩慢時,延遲上傳和下載作業。
- 如果網路品質不佳,無法載入應用程式並使用相關功能,請啟用離線模式。
- 提醒使用者,透過行動網路進行某些操作 (例如觀看影片) 可能會產生費用。
- 供您在分析中使用這項功能來收集使用者的網路品質資料。
許多應用程式都已執行類似的操作。舉例來說,YouTube、Netflix 和大多數其他影片 (或視訊通話) 服務會在串流期間自動調整解析度。在 Gmail 載入時,系統會為使用者提供「載入基本 HTML (適用於連線速度較慢的情況)」的連結。
運作方式
navigator.connection
物件包含用戶端連線的相關資訊。表格下方的說明會說明此屬性的屬性。
屬性 | 說明 |
---|---|
downlink |
頻寬估算值 (以百萬位元/秒為單位)。 |
effectiveType |
連線的有效類型,可能的值為 'slow-2g' 、'2g' 、'3g' 或 '4g' (涵蓋 4g 以上)。根據往返時間和下行連線速度的組合值決定。舉例來說,如果下行連線速度快,但延遲時間高,effectiveType 就會因延遲時間而降低。 |
onchange |
當連線資訊變更時觸發的事件處理常式。 |
rtt |
連線的預估往返延遲時間 (以毫秒為單位)。 |
saveData |
布林值,定義使用者是否已要求減少資料用量模式。 |
在瀏覽器的控制台中執行它會如下所示:
您也可以透過用戶端提示取得 effectiveType
值,並將瀏覽器的連線類型傳達給伺服器。
onchange
事件監聽器可讓您動態適應網路品質的變化。如果您因網路連線品質不佳而延遲上傳或下載作業,可在事件監聽器偵測到網路連線品質改善時,重新啟動傳輸作業。您也可以在網路品質變更時通知使用者。舉例來說,如果他們的 Wi-Fi 訊號中斷,並且連線至行動網路,這麼做可以避免意外的資料傳輸 (以及相關費用 💸)。
使用 onchange
事件監聽器的方式與其他事件監聽器相同:
navigator.connection.addEventListener('change', doSomethingOnChange);
結論
Network Information API 的潛在好處非常大,對於網路速度緩慢、需要大量頻寬的應用程式使用者來說更是如此。最重要的是,它可以用來做漸進式增強技巧。