【问题标题】:Determine the age of an object in the cache确定缓存中对象的年龄
【发布时间】:2011-05-05 18:41:50
【问题描述】:

我希望能够确定 HttpRuntime 缓存中项目的年龄,并且想知道是否有任何方法可以做到这一点。基本上我在课堂上的是将第三方 XML 文件解析为一个对象,然后将该对象存储在缓存中。不过,与其在缓存中的对象上设置过期时间,不如在需要刷新对象时尝试提取更新的 XML,以便在解析器失败时保留缓存的对象。如果有人知道如何以不同/更好的方式完成此任务,我也愿意接受。

【问题讨论】:

    标签: .net httpruntime.cache


    【解决方案1】:

    您可以创建一个与带有“_Date”或其他后缀的对象键对应的键

    public object MyProperty
    {
        get { return HttpContext.Cache["MyKey"] as object; }
        set 
        {
            HttpContext.Cache["MyKey"] = value;
            MyPropertyDate = DateTime.Now;
        }
    }
    
    public DateTime MyPropertyDate
    {
        get { return HttpContext.Cache["MyKey_Date"] as DateTime; }
        set { HttpContext.Cache["MyKey_Date"] = value; }
    }
    

    【讨论】:

      【解决方案2】:

      根据您的描述,听起来您应该查看CacheItemUpdateCallback 委托。

      如果您使用此功能,则可以在您的项目从缓存中删除之前收到通知。

      因此您可以尝试从更新的 XML 中重新生成对象,如果解析失败,请重新插入原始对象。

      【讨论】:

      • 我还没有机会尝试这个,但感谢这个提示。这听起来像是一个更好的解决方案。
      猜你喜欢
      • 2016-05-11
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多