2011-12-21 70 views
1

當用戶未在我的ASP.NET MVC 4應用程序中進行身份驗證時,會顯示一個登錄表單。成功通過身份驗證後,他被重定向到主頁,在那裏顯示我MS SQL數據庫中表格的最新數據。MVC:在顯示登錄表單時從後臺數據庫中預取數據

爲了加速數據加載過程,我想在顯示登錄表單的同時在後臺預取所有數據表中的數據。也就是說,我想立即提供視圖,並在用戶輸入憑據時在後臺繼續預取。我試圖使用TaskThread對象,但我無法獲得真正異步加載的數據;相反,登錄視圖僅在加載完成後才顯示。

我怎樣才能獲得數據加載異步?

回答

1

我不認爲基於點擊登錄屏幕爲另一個頁面預取數據確實是解決問題的最佳方法,例如,如果用戶登錄被拒絕,顯然預取無論如何都毫無價值。另外,我甚至不認爲有可能啓動一個流程來填充您在訪問該頁面時返回的內容。也許如果你使用依賴注入框架,如Ninject,並且可能有一個Singleton範圍實例。

是否根據登錄用戶自定義數據?如果數據不是基於登錄用戶定製的,而只是一個運行的靜態查詢,那麼我會考慮使用ASP.NET MVC OutputCache()屬性和small example of it being used在主頁上緩存這些數據(如果您可以承擔的話)它將被緩存,如果您需要最新的數據,我可能會考慮將結果存儲到SQL Table或View中,然後檢索一組平坦的信息,這當然比複雜的查詢要快得多我認爲是什麼佔用你的時間。

+0

應用程序僅用於約五人,因此不經常打。我正在談論的數據庫表包含少於100行,其中只包含文本。因此,必須加載的數據量真的很少。我想讓NHibernate預取那些大約85行,這樣一旦用戶完成了身份驗證,就會填充它使用的二級緩存。 **底線:**我只想加快初始加載速度;在那之後,我已經在使用'[OutputCache]'等等。 – 2011-12-21 02:00:13