确定缓存中对象的年龄

时间:2010-11-05 18:56:14

标签: .net httpruntime.cache

我希望能够确定HttpRuntime缓存中项目的年龄,并且想知道是否有任何方法可以执行此操作。基本上我在我的类中将第三方XML文件解析为对象,然后将对象存储在缓存中。但是,不是在缓存中的对象上设置过期,而是在需要刷新对象时尝试拉出更新的XML,以便在解析器失败时保留我的缓存对象。如果有人知道如何以不同/更好的方式实现这一点,我也会接受想法。

2 个答案:

答案 0 :(得分:2)

您可以使用“_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; }
}

答案 1 :(得分:1)

根据您的说明,您应该看看CacheItemUpdateCallback代表。

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

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