【问题标题】:Asp.Net memory cache not refreshingAsp.Net 内存缓存不刷新
【发布时间】: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;
}

我是否遗漏了缓存策略中的某些内容以使其真正刷新?我做错了什么?

感谢您的帮助

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    您能否检查代码中的其他任何位置是否分配了相同的键和值?因为这样做会覆盖警察并使其不会过期。

    <cache disableExpiration="true"/> - is not set in your web.config?
    

    【讨论】:

    • @Immanueal 在 web.config 中没有关于缓存的内容。我将把它强制设置为 false,我会检查密钥以确保不是这种情况
    • 重复键不是问题我还强制禁用过期为假。它没有工作
    • 好的。虽然与此无关,但请查看 link,其中提到了 UTC 和持续时间以查看
    猜你喜欢
    • 2012-07-02
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多