javascript:有没有JS可以测试网络速度?

时间:2010-12-31 04:32:57

标签: javascript web latency

我将测试我的网站速度,主要是网络服务器延迟。总结一下我想要实现的目标:

1)在我的网站上托管javascript的网页(http://myweb.com/test-speed.html)

2)我把这个网址给了我的朋友

3)他们不需要做任何事情,他们只需要访问这个网页,然后在网页上打印出延迟。

4)如果网页也可以告诉访问者所处的状态(使用IP地址范围数据库),那将是一个加号。

任何现有解决方案? 我可以修改javascript来将数据记录到数据库中,但我认为这里的核心是如何编写javascript以了解延迟。

4 个答案:

答案 0 :(得分:8)

网络速度与网页加载延迟完全不同,因为后者包括许多其他因素,如服务器端计算时间,关联请求和缓存,渲染,异步元素等。

实际上,以下解决方案将测试发送GET请求与完全接收响应主体之间(但在呈现任何内容或检索任何关联资产之前)之间的持续时间。虽然您可以自由地使用替代实现,但我使用jQuery框架稍微简化了XHR创建过程。

// prepare the XHR object
$.ajax({
    beforeSend: function(){
        // right before firing off the request, create a global object that includes the request send time
        window.startTime = new Date();
    },

    // send the request to the root URI of this host
    url: '/',

    success: function(){
        // once the request comes back, record the end time
        window.endTime = new Date();

        // take the difference, which will yield a number in milliseconds, and print it out
        document.write(window.endTime - window.startTime + " ms");
    }
});

来源:http://jsfiddle.net/5h4GZ/

只需将其放在页面上的<script>标记中,就可以了。根据需要修改document.write电话,将其置于更显眼的位置。此外,您可以随后在监控Web服务中插入后续调用,以将其写入数据库。

网上有很多关于地理位置的教程,所以其中任何一个都可以。您可以利用Geolocation API,但更有可能的是,您只需按IP地址执行此操作即可,因为这实际上对您的需求更为重要。为此,有大量的在线Web服务可以为您提供基于IP的地理定位。这当然可以在服务器端完成,因此精确的实现将取决于您的技术。

答案 1 :(得分:2)

我认为您可以使用以下方式进行基本延迟测试:

<script type="text/javascript">
var time1 = new Date();
</script>

<script type="text/javascript" src="latency.js"></script>

latency.js会:

var time2 = new Date();

我相信time2 - time1应该是粗略的往返延迟。这是执行latency.js GET请求并接收单行响应所需的时间。这不精确,因为我们包括用于处理数据包的时间,传输实际行(这取决于带宽,而不是延迟),以及解析和执行JavaScript。

然而,延迟应该仍占主导地位。

如上所述,4。是标准的IP地理定位。 This是使用google.loader.ClientLocation的简单工作演示。 google.loader.ClientLocation.address.region应该是美国的州。

答案 2 :(得分:2)

  1. var startTime = new Date;
  2. 使用XHR从您的服务器请求一个简单的响应。 (jQuery或更小的跨浏览器XHR包装器。)
  3. 来自您的XHR请求的成功回调中的
  4. var roundTripLatencyInMS = new Date-startTime;
  5. 谷歌地理定位与您的第二个问题无关,或提出单独的问题。

答案 3 :(得分:0)

这是一个示例javascript应用程序:

http://gfblip.appspot.com/

源代码在这里:

https://github.com/apenwarr/blip