javascript:是否有任何JS可以测试网络速度?

javascript:是否有任何JS可以测试网络速度?,javascript,web,latency,Javascript,Web,Latency,我将测试我的网站速度,主要是Web服务器延迟。总结我想要实现的目标: 1) 我的网站中托管的带有javascript的网页(http://myweb.com/test-speed.html) 2) 我把这个url给我的朋友 3) 他们不需要做任何事情,他们只需要访问此网页,然后将延迟打印在网页中 4) 如果网页还可以告诉访问者处于哪个状态(使用IP地址范围数据库),这将是一个加号 有什么现有的解决方案吗? 我可以修改javascript以将数据记录到数据库中,但我认为这里的核心是如何编写java

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

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

2) 我把这个url给我的朋友

3) 他们不需要做任何事情,他们只需要访问此网页,然后将延迟打印在网页中

4) 如果网页还可以告诉访问者处于哪个状态(使用IP地址范围数据库),这将是一个加号

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

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

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

<script type="text/javascript" src="latency.js"></script>
我认为
time2-time1
应该是大致的往返延迟。这是执行
latency.js
GET请求并接收单行响应所需的时间。这并不精确,因为我们包括处理数据包、传输实际线路(取决于带宽,而不是延迟)以及解析和执行JavaScript所用的时间

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

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

  • var startTime=新日期
  • 使用XHR从服务器请求一个简单的响应。(jQuery或更小的跨浏览器XHR包装器。)
  • var roundTripLatencyInMS=新日期开始时间

  • 第二个问题与此问题无关,请用谷歌搜索地理位置,或者单独提问。

    网络速度与网页加载延迟截然不同,因为后者包括大量其他因素,如服务器端计算时间、相关请求和缓存、渲染、异步元素,等等

    实际上,下面的解决方案将测试从发送GET请求到完全接收响应正文(但在呈现任何内容或检索任何相关资产之前)之间的持续时间。我使用该框架在某种程度上简化了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");
        }
    });
    
    资料来源:

    只需在页面上的
    标记中塞进这个,就可以开始了。修改
    文档。根据需要编写
    调用,将其放在更显眼的位置。另外,您可以在那里插入对监视web服务的后续调用,以将其写入数据库


    网上有很多关于地理定位的教程,任何一个都可以。您可以利用地理定位API,但更可能的是,您只需通过IP地址就可以做到这一点,因为这实际上对您的需求更为重要。为此,有大量的在线web服务将为您提供基于IP的地理位置。当然,这些都可以在服务器端完成,因此具体的实现将取决于您的技术。

    下面是一个javascript应用程序示例:

    源代码如下:


    +1不依赖任何库、AJAX请求等。但有两个潜在问题:1。如果在运行任何脚本之前加载了外部脚本,则两者大致相同,2。caching@JamesBillingham是的,我认为可以通过添加缓存buster(latency.js?rand=someRandomNumber)来解决这两个问题。这可以在服务器端(输出latency.js URL时)完成,也可以通过注入latency脚本标记(使用
    appendChild
    等)完成。请参见以下内容:
    // 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");
        }
    });