日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何用JavaScipt測網速

瀏覽:33日期:2023-06-04 08:00:43
前言

事情是這樣的,最近嘗試寫一個通過判斷當前網速,從而在前端控制范圍請求去分步請求一個大型文件的庫。這個東東我現在一行代碼都還沒寫,除了突然發現這個需求的思路有些不太實際之外,另一個原因是我突然問自己——前端要怎么判斷網速啊?? ? !

前端判斷網速的原理總結

(注:下面求的網速單位默認為KB/S)通過查閱相關資料,我發現思路主要是分為以下幾種:

1.通過img加載或者發起Ajax請求計算網速

通過請求一個和服務端同域的文件,例如圖片等,在前端開始請求和收到響應兩個時間點分別通過Date.now標記start和end,因為Date.now得出的是1970年1月1日(UTC)到當前時間經過的毫秒數,所以我們通過end - start求出時間差(ms),然后通過計算:

文件大小(KB) * 1000 /( end -start )

就可以計算出網速了(KB/S)。

而請求文件又有兩種方法:通過img加載或者AJAX加載:

通過創建img對象,設置onload監聽回調,然后指定src, 一旦指定src,圖片資源就會加載,完成時onload回調就會調用,我們可以根據時機分別標記start和end。 通過AJAX進行請求,即創建XHR對象,在onreadystatechange回調里,判斷當readystate = 4時候加載完成,根據時機分別標記start和end。2.window.navigator.connection.downlink網速查詢

我們還可以通過一些H5的先進API去實現,例如這里我們可以使用的是window.navigator.connection.downlink 去查詢,但是正如你所知道的是,這類API都是一副德性,即老生常談的兼容性問題,所以我們一般都是作為一種預備的手段,通過能力檢測,能用就用它,不能用就通過別的方法。而且需要注意downlink的單位是mbps,轉化成KB/S的公式是

navigator.connection.downlink * 1024 / 8

乘1024可以理解,為什么后面要除8呢?這是因為mbps里的b指的是bit(比特),KB/s里面的B指的是Byte(字節),1字節(b)=8比特(bit),所以需要除個8

3. 一般來說,通過請求文件測算網速

單次可能會有誤差,所以我們可以請求多次并計算均值。

前端判斷網速的方法及其優缺點 img加載測速:借助img對象加載測算網速。優點:沒有跨域帶來的問題。缺點:(1)要自己測文件大小并提供參數fileSize,(2)文件必須為圖片 (3)文件大小不能靈活控制 Ajax測速: 通過Ajax測算網速。 優點: (1)不用提供文件大小參數,因為可以從response首部獲得(2)測試的文件不一定要是圖片,且數據量能靈活控制。缺點:跨域問題 downlink測速: 通過navigator.connection.downlink讀取網速。優點:不需要任何參數。缺點:1.兼容性很有問題,2.帶寬查詢不是實時的,具有分鐘級別的時間間隔 綜合實現:先嘗試采用downlink測速,否則多次AJAX測速并求平均值img加載測速

function getSpeedWithImg(imgUrl, fileSize) { return new Promise((resolve, reject) => {let start = null;let end = null;let img = document.createElement(’img’);start = new Date().getTime();img.onload = function (e) { end = new Date().getTime(); const speed = fileSize * 1000 / (end - start) resolve(speed);}img.src = imgUrl; }).catch(err => { throw err });}

Ajax測速

function getSpeedWithAjax(url) { return new Promise((resolve, reject) => {let start = null;let end = null;start = new Date().getTime();const xhr = new XMLHttpRequest();xhr.onreadystatechange = function () { if (xhr.readyState === 4) {end = new Date().getTime();const size = xhr.getResponseHeader(’Content-Length’) / 1024;const speed = size * 1000 / (end - start)resolve(speed); }}xhr.open(’GET’, url);xhr.send(); }).catch(err => { throw err });}

downlink測速

function getSpeedWithDnlink() { // downlink測算網速 const connection = window.navigator.connection; if (connection && connection.downlink) {return connection.downlink * 1024 / 8; }}

綜合測速

function getNetSpeed(url, times) { // downlink測算網速 const connection = window.navigator.connection; if (connection && connection.downlink) {return connection.downlink * 1024 / 8; } // 多次測速求平均值 const arr = []; for (let i = 0; i < times; i++) {arr.push(getSpeedWithAjax(url)); } return Promise.all(arr).then(speeds => {let sum = 0;speeds.forEach(speed => { sum += speed;});return sum / times; })}

以上代碼我發了一個npm包,可以通過下載

npm i network-speed-test

使用方式

import * from ’network-speed-test’;getSpeedWithImg('https://s2.ax1x.com/2019/08/13/mPJ2iq.jpg', 8.97).then( speed => {console.log(speed); })getSpeedWithAjax(’./speed.jpg’).then(speed => { console.log(speed);});getNetSpeed(’./speed.jpg’, 3).then(speed => { console.log(speed);});getSpeedWithDnlink();npm包地址

https://www.npmjs.com/package/network-speed-test

Github地址

https://github.com/penghuwan/network-speed-test

以上就是如何用JavaScipt測網速的詳細內容,更多關于用JavaScipt測網速的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产极品嫩模在线观看91精品| 成人美女视频| 国产精品一区三区在线观看| 在线亚洲一区| 91久久中文| 一本一道久久a久久精品蜜桃| 国产精品hd| 你懂的国产精品永久在线| 国产精品黄网站| 国产欧美在线| 国产欧美日韩免费观看| 国产精品久久久久久av公交车| 午夜亚洲福利| 日本亚洲三级在线| 中文字幕一区二区三区日韩精品| 玖玖玖国产精品| 亚洲精品日本| 欧美91福利在线观看| 夜夜嗨网站十八久久| 黄色av一区| 六月丁香综合| 日韩av电影一区| 国产精品九九| 国产精品久久久久久久久久10秀| 精品美女视频| 亚洲国产综合在线看不卡| 国产精品原创| 亚洲一级黄色| 亚洲欧美日韩国产综合精品二区| 在线成人直播| 日韩欧美中文字幕在线视频| 国产精品v一区二区三区| 国产精品亚洲二区| 久久久久久久欧美精品| 久久av偷拍| 99精品在线观看| 玖玖精品视频| 亚洲精品在线a| 精品国产一区二区三区噜噜噜| 日韩国产一区| 99热精品在线观看| 91亚洲精品在看在线观看高清| 蜜臀av在线播放一区二区三区| 国产欧美日韩在线观看视频| 精品高清久久| 欧美精选视频一区二区| 国产农村妇女精品一二区| 日本不卡一区二区| 精品九九在线| 婷婷亚洲五月色综合| 日本综合精品一区| 国产伊人久久| 在线亚洲一区| 久久精品国产网站| 欧美不卡高清| 国产欧美日韩| 91高清一区| 中文精品视频| 欧美a级一区二区| 午夜国产欧美理论在线播放| 日韩中文字幕一区二区高清99| 精品国产欧美日韩| 亚洲欧美日韩国产| 久久久国产精品网站| 亚洲精品1区| 欧美交a欧美精品喷水| 蜜桃成人av| 国产精品嫩草影院在线看| 精品一区在线| 国产极品嫩模在线观看91精品| 日韩一区二区久久| 日韩不卡一二三区| 国产精品白浆| 亚洲精品网址| 国产劲爆久久| 日韩一级精品| 狠狠躁少妇一区二区三区| 亚洲精品系列| 国产在线|日韩| 国产日产高清欧美一区二区三区| 成人av二区| 免费观看亚洲天堂| 日av在线不卡| 久久精品影视| 欧美国产专区| 色8久久久久| 亚洲一级黄色| 久久国产精品免费一区二区三区| 欧美影院三区| 91亚洲自偷观看高清| 亚洲精品韩国| 伊人精品视频| 精精国产xxxx视频在线野外| 欧美在线精品一区| 亚洲女人av| 国产99久久| 精品亚洲a∨| 欧美亚洲一级| 免费成人在线影院| 日韩亚洲在线| 久久婷婷丁香| 中文字幕人成乱码在线观看 | 成人综合一区| 久久成人av| 久久精品99国产精品| 日韩午夜高潮| 蜜桃tv一区二区三区| 色综合五月天| 国产剧情一区| 亚洲综合激情在线| 首页国产欧美日韩丝袜| 日本精品在线中文字幕| 成人在线黄色| 久久中文欧美| 麻豆精品在线| 国产欧美一区二区色老头| 欧美1级日本1级| 91精品国产成人观看| 国产一区二区三区天码| 久久伊人国产| 精品视频在线你懂得| 国产精品日韩精品在线播放| 奇米777国产一区国产二区| 欧美伊人影院| 欧美久久亚洲| 青青伊人久久| 日韩av二区在线播放| 视频一区日韩精品| 日韩精品高清不卡| 日韩av一区二区三区| 亚洲精品日本| 在线观看亚洲精品福利片| 日韩精品一级中文字幕精品视频免费观看 | 视频一区国产视频| 国产精品日韩久久久| 中文日韩在线| 亚洲伊人影院| 亚洲视频二区| 91av一区| 日韩国产91| 国产乱人伦丫前精品视频| 国产精品视频3p| 久久av电影| 日本久久黄色| 97精品国产| 婷婷激情综合| 日本亚洲视频在线| 日本午夜精品视频在线观看| 国产精品三p一区二区| 岛国精品一区| 久久久国产精品一区二区中文| 99视频精品视频高清免费| 亚洲一区二区三区高清不卡| 亚久久调教视频| 日韩成人在线看| 精品午夜久久| 欧美+日本+国产+在线a∨观看| 亚洲免费观看| 日本中文字幕视频一区| 麻豆视频观看网址久久| 国产在线观看91一区二区三区| 日韩在线观看不卡| 91成人网在线观看| 日日夜夜免费精品| 国产精成人品2018| 亲子伦视频一区二区三区| 国产精品婷婷| 欧美日一区二区在线观看| 精品国产一区二区三区性色av| 久久精品天堂| 米奇777超碰欧美日韩亚洲| 日韩精品视频中文字幕| 黄色网一区二区| 红桃视频欧美| 欧美日韩xxxx| 欧美片第1页| 免费看黄色91| 国产精品毛片久久久| 欧美日韩水蜜桃| 亚欧成人精品| 中文字幕在线免费观看视频| 香蕉精品视频在线观看| 国产麻豆一区二区三区精品视频| 国产69精品久久| 久久国产亚洲| 日韩精品久久久久久| 日韩成人综合| 日韩午夜视频在线| av资源新版天堂在线| 日韩一区欧美二区| 91综合网人人| 亚洲精品四区| 久久高清免费| 国产精品亚洲综合久久| 精品一区毛片| 国产精品777777在线播放| 国产日韩专区| 91亚洲国产成人久久精品| 男女男精品网站| xxxxx性欧美特大|