使用jQuery.get()来测量客户端带宽

时间:2011-07-08 09:37:52

标签: javascript jquery

我使用以下脚本确定用户的下行带宽以相应地提供内容:

    var bandwidthCheckStart = new Date().getTime();
    var bandwidthCheckEnd;
    $.ajax({
        url: xBandwidthCheckFile,
        async: false,
        cache: false,
        success: function(clipXmlRequest){
            bandwidthCheckEnd = new Date().getTime();
        },
        error: function() {
            xSendDebugMessage("Could not get \""+xBandwidthCheckFile+"\" from server.", "warning");
        }
    });
    var bandwidthCheckDuration = bandwidthCheckEnd - bandwidthCheckStart;

但是,我觉得这种方法不可靠,因为它没有考虑启动文件传输所需的时间。 (我们可以通过使用更大的文件来检查带宽来最小化效果,但我希望它最大为10kb。)

有没有办法确定请求开始回答的时间,还是有其他更可靠的方法?

3 个答案:

答案 0 :(得分:0)

使用您的代码,监控偶然连接,并为您的网站用户构建配置文件。这远非理想,但这可能是现在唯一的方式。

您可以开始游说W3C和浏览器添加该功能...... 如果你这样做,请告诉我!

答案 1 :(得分:0)

您应该计算成功函数中的bandwidthCheckDuration。否则,它将在传输结束之前计算。

success: function(clipXmlRequest){
    bandwidthCheckEnd = new Date().getTime();
    alert(bandwidthCheckEnd - bandwidthCheckStart); 
}

答案 2 :(得分:-3)

我建议使用Navigation Timing.