大規模なシステムのワークフローの一部として 2 ページの設定がある場合、パフォーマンスの問題があります。このセクションは、ユーザーが独自のパラメーターを選択できるようにするレポートのレンダリング専用です。
Page1.aspx
レポートのパラメーター情報を収集します。フォームで送信された情報を受け取り、それを検証します。OK と検証された場合は、選択内容を XML として DB に保存Page2.aspx
し、クエリ文字列に実行 ID を指定して にリダイレクトします。十分にシンプルで、パフォーマンスは素晴らしいです。
Page2.aspx
DB から ID を取得し、CrystalReportDocument
オブジェクトをハイドレートします (数ミリ秒かかります)。次に、これを呼び出しExportToHttpStream
て、レポートを PDF、DOC、または XLS ダウンロードとしてレンダリングします (出力形式は で決定されますPage1.aspx
)。ExportToHttpStream
レポートの作成方法とターゲット システムの DB インデックスが原因で、この方法のパフォーマンスは非常に低くなります。これは現時点では私の手に負えませんが、彼らが取り組んでいることを約束します.
問題は、送信ボタンPage1.aspx
が押されたときに、ユーザーがダウンロードを開始する前に非常に長い遅延が発生することです。その後、ユーザーが問題があると考えて送信ボタンを再度押すと、さらに複雑になります。
私がする必要があるのは、にPage1.aspx
リダイレクトすることだと思いますPage2.aspx
。Page2.aspx
マスターページの家具と読み込みdiv
をレンダリングする必要があり、保存ダイアログが自動的にポップアップする前に、レポートはバックグラウンドで非同期的にレンダリングする必要があります。その後、読み込み中の div を「レポートが生成されました。戻るにはここをクリックしてください」 '。
これがこれを達成するための最良の方法である場合、ページ全体を読み込んでから、レポートを非同期的に要求するにはどうすればよいですか? 私はここでどんな提案も受け入れます。