57

ObjectCacheを使用して、次のようなアイテムを追加した場合:

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

オブジェクトは1日で期限切れになることを理解しています。ただし、オブジェクトが1/2日後に次を使用してアクセスされた場合:

object mystuff = cache["mykey"];

これによりタイマーがリセットされ、キー「mykey」を使用してエントリに最後にアクセスしてから1日になるのでしょうか、それとも有効期限が切れるまで1日半になるのでしょうか。

答えがノーの場合、これを行う方法があります。私は知りたいです。

ありがとう。

4

2 に答える 2

113

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

CacheItemPolicy.AbsoluteExpiration設定された時間が経過すると、エントリの有効期限が切れます。

CacheItemPolicy.SlidingExpiration設定された時間内にアクセスされなかった場合、エントリは期限切れになります。

使用ObjectCache Add()している過負荷は絶対有効期限として扱われます。つまり、アクセス回数に関係なく、1日後に有効期限が切れます。他のオーバーロードの1つを使用する必要があります。スライド式の有効期限を設定する方法は次のとおりです(少し複雑です)。

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を必要な適切なキャッシュ時間に変更します。

于 2012-11-30T02:02:02.723 に答える
-10

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

于 2016-06-01T12:35:22.773 に答える