1

我有這個瘋狂的大型數據庫,我想打印出來的數據,但由於數據庫相當大,通常需要大約10-20分鐘執行。ASP.NET和後臺緩存

我真的不希望網絡用戶等待那麼長時間才能顯示一個頁面,並且想知道是否有辦法預先將全球SQL數據每隔1小時預先緩存一次,以供所有人查看?

我嘗試搜索谷歌的aspx和後臺工作人員,我發現大多數awsers是,asp不是爲此設計的,我需要使用Windows服務..但作爲票價,我知道,Windows服務確實不支持Web瀏覽器訪問? 或者有沒有辦法通過Windows Service的ASPX運行WebServer?

我從來沒有與ASPX工作過,並有不知道我在做什麼,但是我在vb.net

+3

如果您的查詢需要20分鐘執行,那麼您需要解決此問題。例如,創建第二個臨時數據庫,即將最終數據保存在一個平面表中,每6小時更新一次這些平面數據,然後使用該平面表讀取它們。 – Aristos

回答

1

看看這個MSDN文章2000小時左右:How to: Add Items to the Cache

你可能想將數據添加到應用程序緩存,以1小時的滑動過期:

Cache.Insert("yourBigData", bigDataObject, _ 
    Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _ 
    New TimeSpan(0, 60, 0)) 

然後,在你的代碼,只要你想訪問大數據,首先檢查緩存:

If(Cache("yourBigData") IsNot Nothing) Then 
    ' Get your data out of the cache, and use that 
    Dim yourBigData As DataTable = CType(Cache("yourBigData"), DataTable) 
Else 
    ' retrieve the data and add it to the cache again 
End If 

對於更寬的視角,見this MSDN article on "Caching Application Data",尤其是這樣的:

AS P.NET具有功能強大,易於使用的緩存機制,允許您 在內存中存儲需要大量的服務器資源,以創建

這似乎正是你的腳本對象。

+0

我的道歉,如果VB.NET代碼有語法錯誤 - 我不再寫VB了。 – jadarnel27

+0

感謝您的解決方案,主要問題是,它會精確地仍然使網站變得緩慢,當它需要更新緩存數據,或者我錯過了什麼? – Droa

+0

你是對的,這隻會導致緩慢問題不那麼頻繁。 Aristos用一種不同的方法留下了對這個問題的良好評論(利用數據庫使查詢更便宜)。 – jadarnel27