2

私が読んだすべての例は、OutputCache を Controller アクション メソッドに適用しました。しかし今、私はアクティブディレクトリユーザーを取得するリポジトリメソッドを持っているので、次のようなこのモデルクラスをキャッシュしたい:

[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」をリポジトリ モデル クラスに含めるのは間違っているのでしょうか。

4

1 に答える 1

4

では、キャッシュ設定を追加して「System.web.mvc + system.Web.UI」をリポジトリ モデル クラスに含めるのは間違っているのでしょうか。

OutputCache悪い習慣であるだけでなく、属性は出力全体がキャッシュされるコントローラー アクションにのみ影響するため、まったく機能しません。MemoryCacheメソッドの結果をキャッシュするために使用できます。ここでは、最初にキャッシュにユーザーのリストが保存されているかどうかを確認し、そうでない場合は AD にクエリを実行して結果をキャッシュに戻すことができます。

于 2013-07-16T10:31:31.707 に答える