非常に遅いレポートがあります。Response.flush を追加したところ、大幅に改善されたようです。この方法を使用する際の注意点は何ですか。
4 に答える
Response.Buffer が true に設定されていない場合、実行時エラーが発生します。また、Flush メソッドが ASP ページで呼び出された場合、サーバーはそのページの Keep-Alive 要求を受け入れません。
また、テーブル全体が送信されるまで一部のブラウザーではレンダリングされないため、テーブルベースのデザインを使用している場合は注意が必要です。つまり、10,000 行がある場合、ユーザーはまだ待つ必要があります。実際に表示される前に、10,000 行すべてを転送する必要があります。
ウェインの答えを拡張する:Response.Headersを設定する必要がある場合は、Responseの一部がフラッシュされた後にそれを行うことはできません。
このように応答をフラッシュしても問題はありません。一般に、パフォーマンスを向上させるには、ページ全体をバッファリングしてクライアントにフラッシュすることをお勧めしますが、スクリプトを長時間実行する場合は、クライアントにデータを表示して、何かが起こっていることをユーザーが確認できるようにすることをお勧めします。
手動でのフラッシュは、最初からページをバッファリングする場合にのみ適切な効果があることに注意してください。そうしないと、IIS が自動的にフラッシュします (ページをクライアントにストリーミングします)。
IIS は、スクリプトを処理する代わりに、頻繁にページをフラッシュする際にリソースを使用する必要があるため、頻繁にフラッシュすることは避ける必要があります。つまり、すべての行ではなく、50 行ごとにフラッシュします。
Response.flushは、ブラウザにレポートのヘッダーを送信するのに役立ちます。次に「読み込み中のメッセージ」を表示し、次にレポートプロセスを実行してレポートをフラッシュし、小さなJavaScriptを実行して「読み込み中」のメッセージを非表示にします。
このようにして、何かが起こっていることをユーザーに知らせて、ユーザーがSTOP BACKを押したり、ウィンドウを閉じたりしないようにします。そうしないと、誘惑される可能性があります。
また、どのブラウザがどのテーブルをレンダリングするかをよく試しましたが、タグを受け取らない限りテーブルをレンダリングしないのはIEだけのようです。つまり、すべての行が他のブラウザに徐々に表示される可能性がありますが、IEには表示されません。