【发布时间】:2017-07-18 18:52:03
【问题描述】:
我正在使用来自 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;
}
我是否遗漏了缓存策略中的某些内容以使其真正刷新?我做错了什么?
感谢您的帮助
【问题讨论】: