对于我的应用程序中的数据可视化请求,我将多个 AJAX 请求发送到一个 servlet,以便以块的形式获取数据,并且在每个请求的回调中,接收到的数据在地图上呈现。
对于这个请求,我试图计算:
- 请求时间(客户端从服务器获取数据所花费的总时间)
- 处理时间(客户端在客户端呈现数据所花费的总时间)
为了做到这一点,我在将每个请求发送到服务器之前捕获每个请求的开始时间(使用 jquery“beforeSend”)和每个请求的“onSuccess”事件,捕获结束时间。
完成所有请求后,我将从最后一个请求的“结束时间”中减去第一个请求的“开始时间”,以计算客户端从服务器获取记录所花费的总时间。(处理时间也是如此)
但不知何故,我的计算并没有产生正确的结果。任何人都可以为这个问题提供一些建议吗?
为了更好地解释我的问题:
var dataProviderRequestsStartTime = [];
var dataProviderRequestsEndTime = [];
var dataParsingStartTime = [];
var dataParsingEndTime = [];
getResults(ids);
var getResults = function(totalIds) {
for(var i=0; i<10; i++;) {
requestResultForOneChunk(totalIds[i]);
}
};
var requestResultForOneChunk = function(streetIds) {
$.ajax({
beforeSend: function() {
var requestStartTime = new Date().getTime();
dataProviderRequestsStartTime.push(requestStartTime);
},
type : 'POST',
url : "myServlet",
contentType : "application/x-www-form-urlencoded",
data : {
"ids" : streetIds,
},
success : function(response) {
//Request Finished
var dataProvideRequestEndTime = new Date().getTime();
dataProviderRequestsEndTime.push(dataProvideRequestEndTime);
addFeaturesToMap(response);
},
error : function(x, e) {
alert("Something went wrong in the request" + e);
}
});
};
var addFeaturesToMap = function(measurements) {
//Parsing Started
var featureParsingStartTime = new Date().getTime();
dataParsingStartTime.push(featureParsingStartTime);
doParsing(measurements);
//Parsing Finished
featureParsingEndTime = new Date().getTime();
dataParsingEndTime.push(featureParsingEndTime);
};
$("#loading").bind(
"ajaxStart",
function(options) {
ajaxStartTime = options.timeStamp;
}).bind("ajaxStop", function(options) {
var ajaxEndTime = options.timeStamp;
var totalTime = (ajaxEndTime - ajaxStartTime);
calculateTimeBreakDown();
});
var calculateTimeBreakDown = function() {
var totalValues = dataProviderRequestsEndTime.length;
var lastValueIndex = totalValues - 1;
// Request Time calculation
var endTimeOfLastRequest = dataProviderRequestsEndTime[lastValueIndex];
var startTimeOfFirstRequest = dataProviderRequestsStartTime[0];
var totalRequestTime = (endTimeOfLastRequest - startTimeOfFirstRequest);
// Parsing Time Calculation
var endTimeOfLastParsing = dataParsingEndTime[lastValueIndex];
var startTimeOfFirstParsing = dataParsingStartTime[0];
var totalParsingTime = (endTimeOfLastParsing - startTimeOfFirstParsing);
};
最后,我有 requestTime(totalRequestTime) 和 parsingTime(totalParsingTime)。但问题是添加这两者并不会产生接近使用 ajax 启动和停止计算的总时间的值。