【问题标题】:Confirming the cache expiration date/time in C#在 C# 中确认缓存过期日期/时间
【发布时间】:2016-09-30 04:10:21
【问题描述】:

我设置了以下代码来创建缓存。在调试中,我将cache 添加到监视列表中,并单步执行代码。但是当我检查 cache 的属性时,在 PollingInterval 中(我只能看到与时间相关的任何内容)它显示天数为 0,分钟数为 2。我已经尝试过使用 AbsoluteExpiration 和 SlidingExpiration。

ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
//policy.AbsoluteExpiration = DateTimeOffset.Now.AddHours(24.0);
//policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30.0);
policy.SlidingExpiration = TimeSpan.FromDays(2.0);

cache.Set("Clients", clients, policy);

我什至尝试使用DateTimeOffset.Now.AddHours(24.0) 作为cache.Set(...) 的第三个参数而不是CacheItemPolicy。

谢谢。

【问题讨论】:

  • PollingInterval - “获取缓存更新其内存统计信息的最长时间” - 不是缓存对象的时间。
  • 如何确认缓存过期时间?
  • Write a test?或者也许可以通过反射窥视它的领域?你为什么不认为它设置正确;y?
  • 我正在尝试确认是否在设置缓存时重置过期计时器。这是为了知道我们是否可以强制(或重置)缓存过期并更新它。

标签: c# caching


【解决方案1】:

正如@stuartd 在上面的评论中指出的那样,我不应该怀疑没有正确应用到期。我最终为此检查了policy.AbsoluteExpiration,并以足够短的时间跨度确认缓存过期确实正确应用。再次感谢@stuartd。

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2012-12-07
    • 2021-09-10
    相关资源
    最近更新 更多