2013-07-16 16 views
2

我讀過的所有示例都將OutputCache應用於Controller操作方法。但現在我有一個庫方法,它檢索活動目錄users.so我想緩存此模型類,如:將OutputCache應用於存儲庫模型類是不好的做法

[OutputCache(CacheProfile = "long", Location = OutputCacheLocation.Server, VaryByParam = "term")] 
public List<DomainContext> GetADUsers(string term) 
{ 
    List<DomainContext> results = new List<DomainContext>(); 
    using (var context = new PrincipalContext(ContextType.Domain, "WIN-SPDEV")) 
    using (var searcher = new PrincipalSearcher(new UserPrincipal(context))) 
    { 
     var searchResults = searcher.FindAll(); 

併爲實現這個我必須包括我的倉庫模型類中的以下內容: -

using System.Web.Mvc; 
using System.Web.UI; 

所以這是錯誤的或者是一個不好的做法,增加緩存設置&包括`System.web.mvc +的System.Web.UI,insdie存儲庫模型類?

回答

4

所以這是錯誤的或者是一個不好的做法,增加緩存設置& 包括`System.web.mvc +的System.Web.UI,insdie一個倉庫模型 類?

這不僅是不好的做法,而且根本不起作用,因爲OutputCache屬性隻影響整個輸出緩存的控制器操作。您可以使用MemoryCache來緩存該方法的結果。因此,您可以首先查看緩存是否存在用戶列表,以及它是否不查詢AD並緩存結果。

+0

不知道它是否會工作,因爲AD用戶現在快速檢索。以及爲什麼在模型類中使用輸出緩存是一種糟糕的做法? –

+0

這很糟糕,因爲您將模型與ASP.NET綁定在一起,並且它不起作用,因爲我已經在我的回答中解釋了OutputCache屬性只對控制器操作有意義。如果你把它放在其他課上,它完全沒有任何作用。 –

相關問題