【发布时间】:2011-05-05 18:41:50
【问题描述】:
我希望能够确定 HttpRuntime 缓存中项目的年龄,并且想知道是否有任何方法可以做到这一点。基本上我在课堂上的是将第三方 XML 文件解析为一个对象,然后将该对象存储在缓存中。不过,与其在缓存中的对象上设置过期时间,不如在需要刷新对象时尝试提取更新的 XML,以便在解析器失败时保留缓存的对象。如果有人知道如何以不同/更好的方式完成此任务,我也愿意接受。
【问题讨论】:
我希望能够确定 HttpRuntime 缓存中项目的年龄,并且想知道是否有任何方法可以做到这一点。基本上我在课堂上的是将第三方 XML 文件解析为一个对象,然后将该对象存储在缓存中。不过,与其在缓存中的对象上设置过期时间,不如在需要刷新对象时尝试提取更新的 XML,以便在解析器失败时保留缓存的对象。如果有人知道如何以不同/更好的方式完成此任务,我也愿意接受。
【问题讨论】:
您可以创建一个与带有“_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; }
}
【讨论】:
根据您的描述,听起来您应该查看CacheItemUpdateCallback 委托。
如果您使用此功能,则可以在您的项目从缓存中删除之前收到通知。
因此您可以尝试从更新的 XML 中重新生成对象,如果解析失败,请重新插入原始对象。
【讨论】: