2009-09-02 129 views
6

我還沒有找到一個體面的解決方案,我的方案。基本上我有一個ASP.NET MVC網站,它具有一定的數據庫訪問權限(每個視圖有2-3個查詢),我想利用緩存來提高性能。ASP.NET MVC緩存場景

問題是,視圖中包含的數據可能會不規則地更改,例如2天內可能會相同,或者數據可能在一個小時內多次更改。

查詢非常簡單(選擇...從哪裏...),而不是巨大的聯接,每個平均返回20-30行數據(約10列)。

在網站的現階段查詢非常簡單,但隨着時間的推移,所有者將增加更多的數據,訪問者數量將增加。他們目前很大,我會考慮緩存,因爲流量主要來自谷歌AdWords等,快速加載頁面將是一個好處(顯然)。

該網站將託管在Microsoft SQL Server 2005數據庫上(但可以根據需要升級到2008)。

我是否可以:

  1. 設置緩存的最短時間的項目不會對改變(例如緩存比如說3分鐘),並告訴車主的任何更改將需要長達3分鐘出現?

  2. 找到一個方法來強制高速緩存清除並重新處理上的變化(例如,如果所有者增加了在管理面板中的項目將清除相關緩存)

  3. 忘記緩存一起

  4. 或者有沒有適合這種情況的選項?

回答

5

如果您正在使用SQL Server,這裏還有另一個值得考慮的選擇:

使用SqlCacheDependency類,以便當基礎數據更新緩存失效。很顯然,這與選項2的結果類似。

雖然我可能實際上必須同意Agileguy - 您的查詢描述看起來很簡單。在你設計的時候思考和記住緩存是一個好主意,但是你是否證明你現在需要它?假設你現在沒有真正處理重大的性能問題,選項3似乎比選項1好得多。

+0

是的我忘了提及這一點,我會爲這個問題添加一條評論。現在看看你的建議:) – Phil 2009-09-02 14:53:54

+0

也許你應該看看ORM工具(例如NHibernate),它具有用於緩存數據的嵌入機制。 – dariol 2010-01-22 23:07:33

4

過早的優化是所有罪惡的根源;)

這就是說,如果你要緩存我會使用根據各地選項的解決方案2.

您有機會少以這種方式「髒」的數據。

善良,

0

第二選擇是最好的。如果同一個應用程序編輯/緩存數據,應該不那麼困難。如果有多個應用程序,可能會更棘手。

如果你不能這樣,第一也許是可以接受的。經過一些調整(即 - 我會嘗試在另一個線程上默認更新緩存,當它超時),它可能工作得很好(如果數據允許有點舊)。

如果可能,切勿刪除緩存。每個人都知道「不成熟的優化......」詩句,但緩存是可以顯着提高應用程序可伸縮性/性能的其中一件事。