如果我使用ObjectCache并添加如下项目:
ObjectCache cache = MemoryCache.Default;
string o = "mydata";
cache.Add("mykey", o, DateTime.Now.AddDays(1));
Run Code Online (Sandbox Code Playgroud)
我知道该对象将在1天后过期.但如果在一天后使用以下方式访问对象:
object mystuff = cache["mykey"];
Run Code Online (Sandbox Code Playgroud)
这是否会重置计时器,因此现在距离上次使用密钥"mykey"访问时间为1天,或者它仍然是1/2,直到到期为止?
如果答案是否定的,并且有办法做到这一点,我很想知道.
谢谢.
mfa*_*nto 85
您可以使用两种类型的缓存策略:
CacheItemPolicy.AbsoluteExpiration
将在一段时间后过期.
CacheItemPolicy.SlidingExpiration
如果在一定时间内未访问该条目,则该条目将到期.
ObjectCache Add()
您使用的超载将其视为绝对过期,这意味着它将在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);
}
Run Code Online (Sandbox Code Playgroud)
您将TimeSpan更改为所需的适当缓存时间.
归档时间: |
|
查看次数: |
36628 次 |
最近记录: |