使用JavaScript计算速度
使用JavaScript计算速度
在下面的代码中,我尝试计算图像的下载速度,但速度显示为无穷大。我做错了什么?
var imageAddr = "/images/image.jpg" + "?n=" + Math.random(); var startTime, endTime; var downloadSize = 200000; var download = new Image(); download.onload = function () { endTime = (new Date()).getTime(); showResults(); } startTime = (new Date()).getTime(); download.src = imageAddr; function showResults() { var duration = Math.round((endTime - startTime) / 1000); var bitsLoaded = downloadSize * 8; var speedBps = Math.round(bitsLoaded / duration); var speedKbps = (speedBps / 1024).toFixed(2); var speedMbps = (speedKbps / 1024).toFixed(2); alert("您的连接速度为:\n" + speedBps + " bps\n" + speedKbps + " kbps\n" + speedMbps + " Mbps\n" ); }
使用JavaScript计算速度的问题是因为在计算过程中没有考虑到单位的转换。endTime和startTime的单位都是毫秒,它们的差值也应该是毫秒。在给出的示例中,图片加载时间为300毫秒,但在计算速度时,将其除以1000,导致结果为0,从而得到了错误的速度。同样地,将duration设置为0会导致速度计算结果为无穷大。
然而,需要注意的是,通过这种方法无法得到准确的结果。还有延迟、连接时间、首字节时间等因素无法通过此方法进行测量,对于小于1MB的图片,这些因素会导致非常不准确的结果。
关于如何确定上传/下载限制
我已经使用这种方法和其他几种类似的技术进行了测试,但几乎没有从数据中得到有意义的结果。在我的测试中,小、中、大文件的下载速度差异非常大。人们本来期望它们的下载速度相似,因此我认为速度不是一个能够准确反映速度的测量标准。