0

mvc アプリケーションでルックアップ データをキャッシュしています。次のコードがあります。

  // GET: Category Types 
        public JsonResult GetAuditGrants(int auditID)
        {
            AuditDAL ad = new AuditDAL();
            if (System.Web.HttpContext.Current.Cache["AuditGrants"] == null)
            {
                System.Web.HttpContext.Current.Cache["AuditGrants"] = ad.GetAuditIssueGrants(auditID);
            }
            var types = (IEnumerable<Grant>)System.Web.HttpContext.Current.Cache["AuditGrants"];
            return this.Json(types.ToList());
        }

有効期限が設定されていない場合、デフォルトではキャッシュ内のデータが期限切れになるのはいつですか? アプリ内のルックアップ データの一貫性を保つために、webconfig に保存することをお勧めしますか?

4

1 に答える 1

0

最初の質問に答えるには、MSDN を参照してください。そのドキュメントによると、Itemプロパティ (またはインデクサー)を使用してオブジェクトを追加することは、ドキュメントInsertに次のように記載されているメソッドを呼び出すことと同じです。

Insert メソッドのこのオーバーロードを使用してキャッシュに追加されたオブジェクトは、ファイルまたはキャッシュの依存関係なし、Default の優先度、NoSlidingExpiration のスライド有効期限値、および NoAbsoluteExpiration の絶対有効期限値で挿入されます。

2 番目の質問は、アプリケーション固有のものです。ベスト プラクティスは、アプリケーションをプロファイリングすることです。アプリケーションで大量のキャッシュ ミスが発生し、キャッシュが小さいままである場合は、その制御を可能にするAddまたはInsertsオーバーロードのいずれかを使用して、有効期限のスライディング ウィンドウを延長することをお勧めします。その場合、選択したパラメーターをアプリの設定に保存することをお勧めします。

ただし、このキャッシュについて覚えておくべきことは、アプリごとのドメインであることです。複数の Web フロントエンドがある場合、またはアプリの複数のワーカー プロセスを起動するように IIS サーバーが構成されている場合でも、キャッシュ戦略を最大限に活用できない可能性があります。その場合、アプリの複数のインスタンスに永続性を提供できるものを使用する必要がある場合があります。Redis を使用していますが、他にも多くのオプションがあります。

于 2014-01-24T01:19:24.513 に答える