正在测量服务器响应时间(客户端)
Measuring server response time (client-side)
我想实现一个脚本,该脚本可以在没有任何额外插件(Java等)的情况下,使用常规浏览器从客户端测量我的服务器(=远程url)的响应时间。
我只关注网络速度(响应时间),而不是页面加载速度
你建议我量什么?它必须在tcp/ip上运行,而不是像ICMP(ping)那样运行。
您将如何绕过客户端的实现?我更喜欢使用JavaScript(JQuery)。
更新:由于我需要跨域检查,ajax调用似乎不是的选项
此外,ajax方法似乎一点也不精确。与FireBug 的信息相比,测试机器上的结果似乎有大约50ms的开销(这几乎是一个恒定值,无论域是什么-我想这是两者之间的处理时间)
您只需要计时一个请求:
var sendDate = (new Date()).getTime();
$.ajax({
//type: "GET", //with response body
type: "HEAD", //only headers
url: "/someurl.htm",
success: function(){
var receiveDate = (new Date()).getTime();
var responseTimeMs = receiveDate - sendDate;
}
});
创建一个资源,它总是在类似mysite.net/speedtest的url上返回一个空的200 OK响应
var startTime = (new Date()).getTime(),
endTime;
$.ajax({
type:'GET',
url: 'http://mysite.net/speedtest',
async: false,
success : function() {
endTime = (new Date()).getTime();
}
});
alert('Took ' + (endTime - startTime) + 'ms');
这将为您提供向服务器发送请求所需的时间,再加上服务器加载响应请求所需最小资源集所需要的时间。
新增:您的问题与您添加的其他信息不一致。你想让客户端ping到一个你无法控制的URL——这与你最初要求的完全不同,从你的服务器获得响应时间。如果您试图让客户端ping到服务器,那么ajax调用就可以了。如果你试图将他们的ping发送到其他服务器,那么我有点困惑你的目标是什么。
var startTime = (new Date()).getTime(),
endTime;
$.ajax({
type: "GET",
url: "test.html",
dataType: "html",
success:function(data){
endTime = (new Date()).getTime();
}
});
现在就来看看区别吧。
你可以很容易地做到这一点。
var t = Date.now();
var t2;
$.ajax({
url:'page',
success:function(){
t2 = Date.now();
console.log(t2-t);//the time needed to do the request
}
});
要请求的页面应该为空,以模拟额外的加载时间。
相关文章:
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- Javascript 倒数计时器 - 客户端时间与 mySQL 时间
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 可以't为客户端形成正确的JSON响应
- 从服务器到客户端的响应状态
- node.js+MySQL;JSON结果-回调问题&没有响应客户端
- 使用 JavaScript 的客户端日期/时间戳一致(考虑时区)
- 将简单的Perl脚本翻译成Python,向客户端发送响应
- Nodejs-websocket:如何在没有服务器响应的情况下连续发送客户端消息
- 在转发到代理目标并将响应发送回客户端之前,编辑POST参数
- 如何在谷歌地图服务的Go客户端中使用方向响应
- 引导日期选择器占用客户端PC时间,如何从服务器设置默认时间
- 如何使用 socket.io 等待客户端响应
- 将PHP响应日期转换为客户端本地时间
- REST API测量服务器端响应时间(性能)
- 使用AJAX将客户端运行时间记录到服务器日志文件中
- 按照客户端日期时间格式显示日期
- 与node.js我如何设置var从HTTP客户端响应
- 正在测量服务器响应时间(客户端)
- 使用命令设置客户端超时时间