2012-08-29 57 views
0

我有一個性能問題,我們有一個2頁面設置作爲更大系統中工作流的一部分。本節致力於呈現允許用戶選擇自己的參數的報告。重定向到一個緩慢的aspx頁面

Page1.aspx收集報告的參數信息。它需要在表單上提交信息並進行驗證。如果驗證成功,它會將選擇作爲XML存儲在數據庫中,然後使用查詢字符串中的運行ID重定向到Page2.aspx。很簡單,性能很好。

Page2.aspx拉動ID出DB的和水合物水晶ReportDocument對象(取毫秒),那麼我們稱ExportToHttpStream然後呈現報告爲PDF或DOC或XLS下載(輸出格式在Page1.aspx確定)。由於我們的報告編寫方式和目標系統上的數據庫索引,ExportToHttpStream方法的性能非常差。這是我目前的控制權,但我承諾他們正在努力。

所以問題是,當按下Page1.aspx中的提交按鈕時,用戶在下載開始之前經歷了很長的延遲。然後再由用戶再次按下提交按鈕,認爲存在問題。

我認爲我需要做的是讓Page1.aspx重定向到Page2.aspxPage2.aspx應呈現母版頁面傢俱和加載div,並且報告應該在保存對話框自動彈出之前以某種方式呈現異步渲染,之後我想將加載div更改爲「生成報告」,單擊此處以回去'。

如果這是實現此目的的最佳方式,我如何加載整頁,然後異步請求報告?我接受任何建議。

回答

0

雖然這兩個答案給了我一些基礎出去和正確的方向研究。

jQuery fileDownload by John Culviner

這讓我下面的頁面結構:利用約翰Culviner的fileDownload插件,方便了類似的解決方案包括我的解決方案

  1. Page1.aspx,收集和驗證的報告並提出參數他們進入Oracle。
  2. Page2.aspx,同時通過查詢字符串setup 3隱藏div s傳遞給runid(指向db中參數的指針)。加載,錯誤和成功。

上面提到的腳本在此處被採用。 jQuery首先設置加載div可見然後調用插件。該插件動態創建iframe並從Page3.aspx下載二進制文件(xls/doc/pdf)。然後它觸發成功回調或失敗。成功回調是通過在Page3.aspx響應末尾設置的cookie來觸發的。

相信插件使用jQuery的一個'text/plain' AJAX調用避免出現不作爲一個八位字節流等效在AJAX的限制提到的下載。

它可以工作,它不是最乾淨的解決方案,它不會降低一點,但可以爲我們受控的Intranet上的用戶提供非常快速響應和令人愉悅的用戶界面。

0

試裝Page2.aspxiframe和使用jQuery顯示等待指示後Page2.aspx下載

1

你可以使用Ajax加載上Page2.aspx報告並顯示加載信息,而它的處理將其隱藏。

看看jQuery.load()方法。這可能是完成你所要做的最簡單的方法。

Page1.aspx - 收集參數
Page2.aspx - 報表視圖,通過AJAX調用Page2Details.aspx