我在使用REST API定价列表的系统中工作,我们为每个请求付费。因此,由于这些价格经常不会发生变化,我会将它们保存在内存缓存中。我的问题是这个缓存没有刷新,为了刷新我必须回收应用程序池。以下是我用来获取价格的功能:
public static List<PricingModel> GetItemPrices()
{
var cache = MemoryCache.Default;
string key = "ItemPrices";
var val = cache[key] as List<PricingModel>;
if (val == null)
{
val = new List<PricingModel>();
val = apiProxy.GetPrices();
foreach (var price in val)
{
price.Price *= 100;
}
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddHours(1);
cache.Set(new CacheItem(key, val), policy);
}
return val;
}
我是否遗漏了缓存策略中的某些内容以使其实际刷新?我做错了什么?
感谢您的帮助
答案 0 :(得分:0)
您可以检查代码中的其他任何地方是否有相同的密钥&amp;值被分配?因为这样做会覆盖警察和警察让它没有到期。
<cache disableExpiration="true"/> - is not set in your web.config?