编辑以阐明我的意图:(基于初步答案)
我有一个网络应用程序。服务器由一组Java POJO组成,我使用Jersey将这些作为REST API公开。浏览器使用jquery ajax调用这些API,然后执行操作。
我想记录我的ajax查询所用的持续时间,我希望按
分解我也在寻找一种基于代码的解决方案,我可以在我的应用程序中系统地应用。
所以,2本身是微不足道的,整个序列的计时是微不足道的。但是我不确定是否能获得1& 3.我最初将系统时间作为GET参数传递,并与服务器上的currentTimeMillis进行比较 - 但这取决于浏览器系统时间与服务器系统时间同步。不太可靠。
还有其他建议吗?
答案 0 :(得分:1)
使用Fiddler。
答案 1 :(得分:1)
答案是你不能。当然不是来自使用Ajax的浏览器。
服务器可以将处理时间放在自定义响应头中,客户端知道发送/接收时间,从中可以很容易地得出往返时间并假设对称链路性能。 有效地超越它意味着您想要测量TCP性能。
答案 2 :(得分:1)
请参阅" How do you determine exactly when, accounting for network latency, a HTTP request was sent?",答案解释了如何"校准"服务器端时间的客户端时间。请注意,此校准 不准确 。希望这会有所帮助。
答案 3 :(得分:0)
如果这仅适用于几页和几个电话,我建议您使用Chrome开发工具中的网络标签。它提供了大量信息。
答案 4 :(得分:0)
这是你正在寻找的东西......
function myAjax(){
var timer = {};
timer["start"] = new Date().getTime();
if(window.XMLHttpRequest){
var req = new XMLHttpRequest();
}
else{
var req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.onreadystatechange=function(){
if(req.readyState===2){
timer['recieved'] = new Date().getTime() - timer['start'];
}
if(req.readyState===3 && !timer['processing']){
timer['processing'] = new Date().getTime();
}
if(req.readyState===4 && req.status===200){
timer['processing'] = new Date().getTime() - timer['processing'];
timer['full'] = new Date().getTime() - timer['start'];
console.log(timer);
}
}
req.open("get", "myScript.php", true);
req.send();
}
时间保存在计时器变量中。这显然不准确,甚至可能不是你想要的,但它是一些AJAX时代的简化版本。