使用JavaScript和網路資訊API進行自適應網路服務
根據網路速度進行不同的內容推送,比如網速速度慢就推送解析度低的圖片,這種自適應網路服務是使用專門的API實現。navigator.connection.effectiveType 可用於根據使用者網路連線的質量提供不同的內容。
effectiveType是Network Information API的一個屬性,透過navigator.connection物件向JavaScript公開。在Chrome中,您可以將以下內容放入DevTools以檢視有效的連線型別(ECT):
console.log(navigator.connection.effectiveType); // 4G
可能的值為effectiveType'slow-2g','2g','3g'或'4g'。在慢速連線上,此功能允許您透過提供較低質量的資源來提高頁面載入速度。
如何應對網路質量的變化?我們可以使用connection.onchange事件監聽器來監控連線變化:
effectiveType在Android上的Chrome,Opera和Firefox支援。其他的一些網路質量提示可在navigator.connection包括rtt,downlink和downlinkMax。
在Vue.js中,使用資料繫結,我們能夠將connection屬性設定為fast或者slow基於ECT值。大致是:
我們根據使用者的有效連線型別有條件地呈現不同的輸出(影片與低解析度影像)。
effectiveType是Network Information API的一個屬性,透過navigator.connection物件向JavaScript公開。在Chrome中,您可以將以下內容放入DevTools以檢視有效的連線型別(ECT):
console.log(navigator.connection.effectiveType); // 4G
可能的值為effectiveType'slow-2g','2g','3g'或'4g'。在慢速連線上,此功能允許您透過提供較低質量的資源來提高頁面載入速度。
如何應對網路質量的變化?我們可以使用connection.onchange事件監聽器來監控連線變化:
function onConnectionChange() { const { rtt, downlink, effectiveType, saveData } = navigator.connection; console.log(`Effective network connection type: ${effectiveType}`); console.log(`Downlink Speed/bandwidth estimate: ${downlink}Mb/s`); console.log(`Round-trip time estimate: ${rtt}ms`); console.log(`Data-saver mode on/requested: ${saveData}`); } navigator.connection.addEventListener('change', onConnectionChange) <p class="indent"> |
effectiveType在Android上的Chrome,Opera和Firefox支援。其他的一些網路質量提示可在navigator.connection包括rtt,downlink和downlinkMax。
在Vue.js中,使用資料繫結,我們能夠將connection屬性設定為fast或者slow基於ECT值。大致是:
if (/\slow-2g|2g|3g/.test(navigator.connection.effectiveType)) { this.connection = "slow"; } else { this.connection = "fast"; } <p class="indent"> |
我們根據使用者的有效連線型別有條件地呈現不同的輸出(影片與低解析度影像)。
<template> <div id="home"> <div v-if="connection === 'fast'"> <!-- 1.3MB video --> <video class="theatre" autoplay muted playsinline control> <source type="video/webm"> <source type="video/mp4"> </video> </div> <!-- 28KB image --> <div v-if="connection === 'slow'"> <img class="theatre" > </div> </div> </div> </template> <p class="indent"> |
相關文章
- [譯]使用 JavaScript 和網路資訊 API 實現自適應服務JavaScriptAPI
- 使用UDP如何進行網路通訊UDP
- Linux 網路通訊管理和系統服務管理Linux
- 在Linux中,如何進行網路服務的監控?Linux
- 網際網路資訊服務安全檢查接收材料清單
- 使用retrofit進行網路請求
- 企業工商大資料API在網際網路行業的應用大資料API行業
- 【工業網際網路】自適應的工業生態系統
- 如何進行網路抓取?
- fiddler進行修改網路進行弱網測試
- “2017網際網路+政務服務論壇”在廣州舉行
- 規範網際網路資訊服務演算法推薦活動WIOT演算法
- Linux下cifs公用網際網路系統和samba服務LinuxSamba
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- 全球資訊網服務
- 國家網際網路資訊辦公室釋出《區塊鏈資訊服務管理規定》區塊鏈
- 每日安全資訊:國家網際網路應急中心開通勒索病毒免費查詢服務
- 提供自動駕駛路況資訊採集服務自動駕駛
- 網路拓撲—FTP服務搭建FTP
- 怎樣利用網際網路差異化進行網路推廣?
- Java使用代理進行網路連線方法示例Java
- 資料檔案在網路“裸奔”,如何在網際網路中進行檔案傳輸?
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- 騰訊:2021年騰訊受理的網際網路服務使用者投訴量為2009210件
- RANet : 解析度自適應網路,效果和效能的best trade-off | CVPR 2020
- 使用URLConnection物件獲取網路資源資訊物件
- 如何用 Python 和 API 收集與分析網路資料?PythonAPI
- 網路封裝APi封裝API
- 青雲QingCloud推出SDN網路直通服務Docker網路能力大幅提升GCCloudDocker
- 使用RSocket進行服務通訊的反應性服務簡介 - Rafał Kowalski
- 2021 VDC :vivo 網際網路服務億級使用者的技術架構演進之路架構
- RDP服務之GoldBrute殭屍網路Go
- Python 網路服務相關 雜記Python
- 使用 http-proxy 對網路請求進行代理HTTP
- React Native 探索(五)使用 fetch 進行網路請求React Native
- Netflix 如何使用eBPF流日誌進行網路洞察?eBPF
- React Native探索(五)使用fetch進行網路請求React Native
- 全球網際網路通訊雲發展演進和未來趨勢