0

大量のメール送信プロセス中にプログレス バーを表示しようとしています。私は従来の ASP を使用しており、コンテンツの圧縮も無効にしています。プログレスバーとして模倣する要素のサイズと、パーセント値としてのテキスト要素のサイズを更新するだけです。

ただし、ページの読み込み中は Javascript が無視されているようです。砂時計が長時間表示され、%100 のプログレス バーのみが表示されます。更新の間にアラートを出すと、Chrome と IE9 は変更された値を期待どおりに更新します。

実際の値の更新を支援するために alert() を置き換える他の Javascript コマンドはありますか? alert() コマンドを使用すると、魔法のようにブラウザがコンテンツをすぐにレンダリングできます。

ありがとう!

 ... Loop for ASP mail send code
 If percent <> current Then
    current = percent   

 %>
   <script type="text/javascript">
     //alert(<%=percent%>);
     document.getElementById('remain').innerText='%<%=percent%>';
     document.getElementById('progress').style.width='<%=percent%>%';
     document.getElementById('success').innerText='<%=success%>';
   </script>
 <%

 End If
 ... Loop end

これらは、コードで alert() を使用した場合のスクリーンショットです。 js-alert.png

4

4 に答える 4

0

まあ、あなたはしません。ドットや一連の画像を印刷するような単純な効果を除いて、安全に動作しません。また、バッファリングが干渉する可能性があります.

私のアプローチは、毎秒ajaxリクエストを使用して、ログファイルまたは電子メール送信カウントファイルまたは大量メールプロセスによって作成されたデータベース内のエントリを読み取るスクリプトに更​​新する領域を持つことです。大量メール送信プロセスも ajax によって開始されます。

于 2012-09-27T09:30:00.080 に答える
0

完全な処理が完了するまで応答を保留することは実行可能なオプションではありません。30 人が同じページにアクセスしていると想像してみてください。特に IIS では、サーバーへの 30 の永続的な接続が長時間続くことになります。実行可能なオプションではないと確信しています。開発環境ではうまくいくかもしれませんが、本番環境に移行してより多くの人がページにアクセスし始めると、サーバーがダウンする可能性があります。

次のことを調べてほしい

サーバーのバックグラウンドで処理を行い、レスポンスを長時間保持しない

サーバー上に常駐し、大量のメールを処理する Windows サービスを作成してみてください。

それでも Web 上で行うと主張する場合は、ajax を使用して一度に 1 通のメールを送信してみてください。ajax リクエストごとに 1 通/2 通のメールを送信

また、response.flush を使用しない上記の例では、ブラウザも % 情報を取得しません。

于 2012-09-27T09:26:56.227 に答える