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())