2010-11-05 100 views
1

我希望能够以确定的httpRuntime缓存项目的年龄,想知道是否有任何的方式来做到这一点。基本上,我在课堂上将第三方XML文件解析为对象,然后将对象存储在缓存中。尽管在缓存中设置了过期对象,但我宁愿在对象需要刷新时尝试更新XML,以便在解析器失败时保留缓存对象。如果有人对如何以不同的/更好的方式完成这个想法有所了解,我也会接受。确定对象的年龄在缓存

回答

1

从你的描述的一个关键,这听起来像你应该看看CacheItemUpdateCallback委托。

如果你使用这个,你可以在你的项目是从缓存中删除通知。

所以,你可以尝试从更新的XML生成对象,如果分析失败时,重新插入原来的对象。

+0

我还没有机会尝试这个,但谢谢你的提示。这听起来像是更好的解决方案。 – Kyle 2010-11-16 15:50:25

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; } 
}