2012-11-30 17 views
29

私はObjectCacheを使用し、そうのような項目を追加する場合:.NETキャッシュのスライディング期限切れの仕組みは?

ObjectCache cache = MemoryCache.Default; 
string o = "mydata"; 
cache.Add("mykey", o, DateTime.Now.AddDays(1)); 

私は、オブジェクトが1日で期限切れになります理解しています。オブジェクトを使用して半日後にアクセスされた場合でも:

object mystuff = cache["mykey"]; 

これは、それは/まだ1を、それが今、「mykey」キーを使用して、エントリの最後のアクセス以来の1日ですので、タイマーをリセット、あるいはん有効期限まで2日?

答えがいいえ、これを行う方法がある場合、わたしは知りたいと思う。

ありがとうございました。

答えて

62

使用できるキャッシュポリシーの2種類があります。

CacheItemPolicy.AbsoluteExpirationを設定時間後エントリを期限切れになります。

CacheItemPolicy.SlidingExpirationは、指定された時間内にアクセスされていない場合、エントリを期限切れにします。

あなたが使用しているオーバーロードは絶対有効期限として扱われます。つまり、何回アクセスしたかにかかわらず、1日後に有効期限が切れます。あなたは他のoverloadsのいずれかを使用する必要があります。ここでは、(それはもう少し複雑だ)あなたがスライディング有効期限を設定したい方法は次のとおりです。

CacheItem item = cache.GetCacheItem("item"); 

if (item == null) { 

    CacheItemPolicy policy = new CacheItemPolicy { 
     SlidingExpiration = TimeSpan.FromDays(1) 
    } 

    item = new CacheItem("item", someData); 

    cache.Set(item, policy); 
} 

あなたが欲しい適切なキャッシュ時間にのTimeSpanを変更します。

+2

完全に答えてください!ありがとうございます。 – Kelly

-3

SlidingExpirationプロパティ値は、設定要素のslidingExpiration属性を使用して設定されます。 スライディング期限切れは、要求が行われ、タイムアウト間隔の半分以上が経過した場合に、有効な認証Cookieの有効期限をリセットします。クッキーが期限切れになると、ユーザーは再認証する必要があります。 SlidingExpirationプロパティをfalseに設定すると、コンフィグレーションされたタイムアウト値に基づいて、認証Cookieが有効な時間を制限することで、アプリケーションのセキュリティを向上させることができます。 requireSSLをfalseに設定した場合は、slidingExpirationをfalseに設定して、チケットの有効期間を短縮することをお勧めします。

+0

質問は、クッキーではなくメモリキャッシュに関するものでした – nsimeonov

関連する問題