2011-12-07 10 views
1

私たちのアプリケーションは、次のタイムスパン(0,0,0)期限切れのキャッシュ内のオブジェクトはどうなりますか?

int cacheTimeout = 5; // Default 5 minute timeout 
if(ConfigurationManager.AppSettings["CacheTimeout"] != null) 
{ 
    cacheTimeout = Convert.ToInt32(ConfigurationManager.AppSettings["CacheTimeout"].ToString()); 
} 
_cache.Insert(Key, CacheItem, null, DateTime.MaxValue, new TimeSpan(0, cacheTimeout, 0)); 

当社の管理が可能にキャッシュの問題について懸念している使用してキャッシュにオブジェクトを追加し、あなたが0の長さの時間間隔でオブジェクトを挿入するとどうなるか、知りたいと思います。

私はオブジェクトがすぐに削除されると思います。間違いなく?

+1

これをテストするには、onRemovedコールバックを設定することができ、Cacheオブジェクトはオブジェクトが削除されたときに通知します。 – RickNZ

答えて

0

回答は「間違っています。

絶対有効期限をNoAbsoluteExpirationに設定し、スライド有効期限をnew TimeSpan(0,0,0)に設定してキャッシュに挿入すると、コールバックはただちに起動されません。私はそれがいつ発射するかを見るのを待っていなかった。もしかしたらそれは20分かもしれない。

だからこれにコードを変更:

int cacheTimeout = 5; // Default 5 minute timeout 
if(ConfigurationManager.AppSettings["CacheTimeout"] != null) 
{ 
    cacheTimeout = Convert.ToInt32(ConfigurationManager.AppSettings["CacheTimeout"].ToString()); 
} 
TimeSpan expiration = cacheTimeout > 0 ? new TimeSpan(0,cacheTimeout,0) : new TimeSpan(0,0,1); 
_cache.Insert(Key, CacheItem, null, System.Web.Caching.Cache.NoAbsoluteExpiration, expiration, CacheItemPriority.Default, OnUpdateCallback); 

その方法を私たちはを行う場合、我々は0に出キャッシュ時間を設定し、1秒の有効期限を持つようにweb.configファイルを更新することができ、キャッシングの問題を抱えています。

関連する問題