我正在尝试找到一种使用 PHP 或 Javascript 测试网络速度的方法。
这可能吗?
理想情况下,我想测试速度并动态决定向客户提供多少内容......
我应该指出,我主要是在谈论移动设备。大多数宽带连接差异很小,所以我的目标是衡量是否有人连接到 WiFi 网络或在蜂窝数据网络上苦苦挣扎。
我正在尝试找到一种使用 PHP 或 Javascript 测试网络速度的方法。
这可能吗?
理想情况下,我想测试速度并动态决定向客户提供多少内容......
我应该指出,我主要是在谈论移动设备。大多数宽带连接差异很小,所以我的目标是衡量是否有人连接到 WiFi 网络或在蜂窝数据网络上苦苦挣扎。
执行 ajax 请求以下载固定大小的数据块并检查之前/之后的时间以大致了解速度:
var start = new Date();
$.ajax(....);
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds.
您需要使用足够大的数据块来获取有效请求,这意味着您只是为了进行此测试而浪费了相当多的带宽。
按照我的看法,您可以使用 JS -> PHP -> JS 调用并为响应计时,但这是非常不准确的。此外,您需要使用大量数据(过度带宽使用问题),并且由于浏览器之间存在/不存在服务器标头,您永远不会得到明确的答案。还有一个与服务提供商(咳嗽comcast咳嗽)有关的问题,他们在前几秒钟给你 12 兆比特的速度,但之后让你窒息到 3 兆比特,所以现在你的“测试”会说他们在 OC 线上,但是流本身现在会出现数据不足并不断缓冲。
最好的解决方案是在流式协议中构建逻辑,该逻辑可以根据传入的数据量/少量数据进行调整。也许它从低带宽质量开始,当它注意到缓冲区增长速度快于数据正在播放(这就是 Hulu、YouTube 或亚马逊视频所做的)。