HttpRuntime.Cache
オブジェクトを参照する必要があります。私はあなたの質問で参照したものと同様に、この周りにラッパーを作成しました。お気軽にご利用ください:
using System.Web.Caching;
public class CachingService
{
protected Cache Cache
{
get;
set;
}
public int CacheDurationMinutes
{
get;
set;
}
public CachingService()
{
Cache = HttpRuntime.Cache;
CacheDurationMinutes = 60;
}
public virtual object Get(string keyname)
{
return Cache[keyname];
}
public virtual T Get<T>(string keyname)
{
T item = (T)Cache[keyname];
return item;
}
public virtual void Insert(string keyname, object item)
{
Cache.Insert(keyname, item, null, DateTime.UtcNow.AddMinutes(CacheDurationMinutes), Cache.NoSlidingExpiration);
}
public virtual void Insert(string keyname, object item, CacheDependency dependency)
{
Cache.Insert(keyname, item, dependency);
}
public virtual void Remove(string keyname)
{
Cache.Remove(keyname);
}
}
ここでは、サンプルの使用例を示します。機能LoadPosts
は、ブログ投稿を読み込んでサイトに表示することになっています。ポストがキャッシュされている場合、それはデータベースからの投稿をロードし、それらをキャッシュしますない場合、この関数は最初、表示されます。
public IEnumerable<BlogPost> LoadPosts()
{
var cacheService = new CachingService();
var blogPosts = cacheService.Get<IEnumerable<BlogPost>>("BlogPosts");
if (blogPosts == null)
{
blogPosts = postManager.LoadPostsFromDatabase();
cacheService.Insert("BlogPosts", blogPosts);
}
return blogPosts;
}
この機能が実行されて初めて、キャッシュは我々ので、null
を返します。まだBlogPostsキーに何も追加していませんでした。関数が呼び出された2回目には、ポストはキャッシュに格納され、ブロックif
のコードは実行されず、データベースへの移動は保存されません。
ありがとうございました。可能であれば、クラスの使い方の例を教えてください。私はC#の初心者です。ありがとう。 –
私は 'CachingService'クラスの使用例を示すサンプル関数を含むように答えを更新しました。 –
ありがとうございます。それを今試みている。 –