ここに、非常に大きなjsonオブジェクトを処理できるAJAXリクエストがあります。次のような読み込みパネルを表示したい(45%):
私の問題は、サーバーがAJAXから送信されたjsonオブジェクトを処理する時間を測定できないように見えることです。
これが私のAJAXリクエストです:
$.ajax({
url: './home/sumbit_json',
type: 'POST',
data: {
json_data: json_data,
user: user,
entry: entry
},
dataType: 'json',
success: function(data) {
if (data.status == false) {
alert("transaction failed");
} else {
alert("transaction successful");
}
}, // End of success function of ajax form
error: function(xhr, status, errorThrown) {
console.log("Error: " + errorThrown);
console.log("Status: " + status);
console.dir(xhr);
},
});
$.ajax({
url: './home/sumbit_json',
type: 'POST',
// this will run before the request to server
beforeSend: function(){
// this variable may need to be set outside of ajax request
// just use something to track time
time = new Date();
},
data: {
json_data: json_data,
user: user,
entry: entry
},
dataType: 'json',
success: function(data) {
if (data.status == false) {
alert("transaction failed");
} else {
alert("transaction successful");
//figure out how long it took:)
alert(new Date() - time);
}
}, // End of success function of ajax form
error: function(xhr, status, errorThrown) {
console.log("Error: " + errorThrown);
console.log("Status: " + status);
console.dir(xhr);
},
});
たぶん、あなたはそれがサーバーにかかる時間に関するデータをデータベースに送り始めることができます。プロセスの平均の追跡を開始し、要求を開始する前に、サーバー上のデータベースに保存されている平均値が何であれ終了するように進行状況バーを設定します。もちろん、終了したら、プログレスバーを最後までスピードアップします。
Chromeに見られるように、さまざまなスロットル設定で何度もテストすることで、この予測を拡張できます。次に、データベースの速度範囲の平均値を作成します。
したがって、ワークフローは次のとおりです。1。インターネット速度Xでリクエストの長さの時間を計ります。2。その時間をデータベースに入れます。3。タイミングで別のリクエストを実行します。4。データベースの値で平均を計算し、データベースの値を更新します。5。繰り返し1 -4異なるインターネット速度/待ち時間で数回6.平均実行時間の良いアイデアが得られたので、データベース内のユーザーの現在の速度/待ち時間の平均時間を取得するリクエストをサーバーに送信します7.進行状況バーを設定します手順6で見つかった平均時間内に完了するようにします。8。要求が完了したら、データベースの平均をこの実際のシナリオに更新します。
時間の経過とともにますます正確になるはずです。
幸運を!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加