1

ファイル内の zip ファイルを抽出するタスクがあります:Update.asp でタスクを開始した後に jquery の進行状況バーを更新するにはどうすればよいindex.aspですか

index.aspで2つのajax呼び出しを使用する解決策を見つけました。1 つはタスクを開始するためのものでupdate.asp、もう1 つsession("progress_status")は、すべての抽出ファイルが終了したときにこのセッションが変更されるものを取得するためのものです。update.asp

<%
session("progress_status") = 0
'file 1 extracted
session("progress_status") = 50
'file 2 extracted
session("progress_status") = 100
%>

問題は、最初の ajax 呼び出しが開始されたときに、最初の呼び出しが終了するまで 2 番目の ajax 呼び出しが保留中のままになることです。

私のajax呼び出し

4

1 に答える 1

0

発生している問題は、ASP プロセッサが特定のセッションに対して一度に 1 つのスクリプトしか処理しないことです。したがって、進行状況を取得しようとする asp スクリプトへの呼び出しは、抽出を実行する asp スクリプトの後ろにキューに入れられます。

これが私がお勧めする方法です:偽物です。抽出を行うページに対して ajax リクエストを行います。その抽出中に、タイマーを使用する純粋な JavaScript 駆動の進行状況バーがあります。最初は非常に速く進行しているように見えますが、その後指数関数的に遅くなるように、少し緩和してください。ajax リクエストが完了すると、プログレス バーを削除する前に完了したことを簡単に表示できます。

zip の元のサイズを取得できれば、その数値を使用して、偽のプログレス バーと現実との一致を改善できます。このような抽出がかなり頻繁に発生する場合は、さまざまな zip ファイルを抽出するのにかかる時間に関する統計を記録して、フレーバー時間とバイトの比率を取得することで、これをさらに進めることができます。

最終的に、ユーザーは何かが起こっているという温かいファジーな感覚を望んでおり、上記の方法でそれが実現されます。

于 2012-06-20T19:43:10.713 に答える