【问题标题】:why data i stored in cache has been removed in asp.net为什么我存储在缓存中的数据已在 asp.net 中删除
【发布时间】:2015-04-15 09:53:06
【问题描述】:

我决定将我的数据(例如国家、州、城市、书籍和其他数据列表)存储在缓存中以提高我的网站速度,但我发现当缓存项目数为 10 且 Cache.EffectivePercentagePhysicalMemoryLimit 为 98 时,我添加我的数据要缓存,但其他数据将被删除。

我将缓存过期时间设置为 20 分钟。我应该如何设置缓存大小?我应该如何处理这个问题?为什么我存储在缓存中的数据在asp.net中被删除了

在下面的代码中,我设置了一个断点,该方法返回一个空列表,当我检查其他数据(如国家/地区和状态)时,它们已从缓存中删除

var cahpters= CacheData.Data.Chapter.list(bookid.ToString());

【问题讨论】:

    标签: c# asp.net caching


    【解决方案1】:

    为什么我存储在缓存中的数据在 asp.net 中被删除了

    对象可以在以下情况下显式地从缓存中取出:

    • 显式调用Remove
    • 数据过期
    • 内存消耗
      • 将首先删除低优先级缓存数据

    很可能在您的情况下,您有大量内存消耗,因此 ASP.NET 决定通过从缓存中删除您的项目来节省内存。

    您也可以注册删除通知(包括原因)。在此处查看更多信息:https://msdn.microsoft.com/en-us/library/7kxdx246%28v=vs.140%29.aspx

    【讨论】:

    • 我已将数据到期时间设置为 20 分钟,并且 98% 的内存是免费的,并且所有优先级已设置为正常,但是当我想获取几秒钟前添加的章节列表时,它会免费返回列表,但 Cache["MYListName"] 不为空,它是免费(空)列表!
    • 使用我发布的链接检查删除原因:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多