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