私のアプリケーションのデータ視覚化リクエストでは、データをチャンクで取得するために複数の AJAX リクエストをサーブレットに送信しています。各リクエストのコールバックで、受信したデータがマップ上にレンダリングされます。
このリクエストのために、私は計算しようとしています:
- リクエスト時間 (クライアントがサーバーからデータを取得するのにかかった合計時間)
- 処理時間 (クライアントがクライアント側でデータをレンダリングするのにかかった合計時間)
これを行うために、サーバーに送信する前に各リクエストの開始時間をキャプチャしています(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 の開始と停止を使用して計算される合計時間に近い値を生成しないことです。