这是我的想法:
有一个小的,独立的JavaScript文件,将在页面完全加载后启动。该脚本将启动一个计时器,下载一个已知大小的文件(假设确切地说是10KB的乱码文本),然后停止计时器。
如果计时器确定下载文件只需要1秒钟,那是否意味着用户只有每秒80千比特的下游服务?或者更确切地说,无论是图像,文本文件,音乐文件等,它都会持续1秒钟从我的服务器下载80千比特?
答案 0 :(得分:1)
这里有很多事情要发生。首先,在下载文件时,您必须满足延迟(第一个下载位通过线路所需的时间)和带宽(适合线路的数据量)。您还必须应对争用和/或路由从根本上变化这一事实,因此这些测量结果会不时变化 - 可能很大 - 。
如果你想要一个体面的测量,你需要多次尝试几种不同大小的文件(10kb,100kb,1000kb,10000kb等)。使用该数据(特别是如果在不同时间测量),您应该能够通过尝试估计延迟(与下载大小无关),将其分解出来并查看剩余时间来估算“下载速度”(对于最佳,最差或平均的情况。)
如果您保持请求数据包较小,我会忽略因上传而导致的延迟。只要确保你尝试下载非常大的文件,你应该没问题。
答案 1 :(得分:0)
客户端下载速度可能会大幅波动,因此一秒钟的样本不会告诉您太多。它将在一秒钟内告诉您它们的平均下载速度(来自您的服务器),但下一秒的下载速度可能是速度的10倍或慢5倍。他们也可能同时下载其他东西,这会影响你的结果。
如果您想这样做,请记住,在服务器收到文件请求之前,您无法开始计时。否则,您还要包括上传时间以请求该文件。另外请记住,文件的标题会占用空间,因此您应该弄清楚文件生成时标题的大小。