MVC アプリケーションでデータをキャッシュする方法 質問する

MVC アプリケーションでデータをキャッシュする方法 質問する

MVC アプリケーションのページ キャッシュと部分ページ キャッシュに関する情報をたくさん読みました。ただし、データをどのようにキャッシュするかを知りたいです。

私のシナリオでは、LINQ to Entities (エンティティ フレームワーク) を使用します。GetNames (または任意のメソッド) の最初の呼び出しで、データベースからデータを取得します。結果をキャッシュに保存し、2 回目の呼び出しで、キャッシュされたバージョンが存在する場合はそれを使用します。

これがどのように機能するか、どこに実装する必要があるか (モデル?)、そしてそれが機能するかどうかの例を誰か示してもらえますか。

私は、通常は非常に静的なデータに対して、従来の ASP.NET アプリでこれが実行されるのを見てきました。

ベストアンサー1

私が使用しているシンプルで優れたキャッシュ ヘルパー クラス/サービスは次のとおりです。

using System.Runtime.Caching;  

public class InMemoryCache: ICacheService
{
    public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
    {
        T item = MemoryCache.Default.Get(cacheKey) as T;
        if (item == null)
        {
            item = getItemCallback();
            MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
        }
        return item;
    }
}

interface ICacheService
{
    T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}

使用法:

cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));

キャッシュ プロバイダーは、キャッシュ内に「キャッシュ ID」という名前のものがあるかどうかを確認し、ない場合はデリゲート メソッドを呼び出してデータを取得し、キャッシュに保存します。

例:

var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())

おすすめ記事