0
我發現了一個很好的例子,她的stackoverflow如何檢測互聯網與JavaScript的速度。但是當我運行代碼時,它顯示1.14 Mbps,但在實際速度測試服務中,我的速度超過了80 Mbps。有人會告訴我爲什麼,我該如何改進?在Javascript中檢測互聯網速度?
var imageAddr = "http://www.w3schools.com/css/trolltunga.jpg";
var downloadSize = 45941; //bytes
function ShowProgressMessage(msg) {
if (console) {
if (typeof msg == "string") {
console.log(msg);
} else {
for (var i = 0; i < msg.length; i++) {
console.log(msg[i]);
}
}
}
var oProgress = document.getElementById("progress");
if (oProgress) {
var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />");
oProgress.innerHTML = actualHTML;
}
}
function InitiateSpeedDetection() {
ShowProgressMessage("Testing your internet connection quality...");
window.setTimeout(MeasureConnectionSpeed, 1);
};
if (window.addEventListener) {
window.addEventListener('load', InitiateSpeedDetection, false);
} else if (window.attachEvent) {
window.attachEvent('onload', InitiateSpeedDetection);
}
function MeasureConnectionSpeed() {
var startTime, endTime;
var download = new Image();
download.onload = function() {
endTime = (new Date()).getTime();
showResults();
}
download.onerror = function (err, msg) {
ShowProgressMessage("Invalid image, or error downloading");
}
startTime = (new Date()).getTime();
var cacheBuster = "?nnn=" + startTime;
download.src = imageAddr + cacheBuster;
function showResults() {
var duration = (endTime - startTime)/1000;
var bitsLoaded = downloadSize * 8;
var speedBps = (bitsLoaded/duration).toFixed(2);
var speedKbps = (speedBps/1024).toFixed(2);
var speedMbps = (speedKbps/1024).toFixed(2);
ShowProgressMessage([
"Your connection speed is:",
speedBps + " bps",
speedKbps + " kbps",
speedMbps + " Mbps"
]);
}
}
那麼,也許另一端的服務器只推到1.14Mbps? – pawel
也許w3schools服務器服務圖像有點慢? – Bergi
我覺得很難相信,當你輸入這個問題的標題時,上面沒有出現? [我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)*「搜索和研究」* – Liam