确定缓存中对象的年龄

发布于 2024-10-01 00:56:13 字数 195 浏览 2 评论 0原文

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

I'd like to be able to determine the age of an item in the HttpRuntime cache and was wondering if there was any way to do this. Basically what I in my class is parse a third party XML file into an object and then store the object in the cache. Rather than setting an expiration on the object in the cache though, I'd rather try to pull the updated XML when the object needs to be refreshed so that I can keep my cached object if the parser fails. I'm also open to ideas if anyone has an idea of how to accomplish this a different/better way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满地尘埃落定 2024-10-08 00:56:13

您可以创建一个与带有“_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; }
}

You could create a key that corresponds to the objects key with "_Date" or some other suffix

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; }
}
瞄了个咪的 2024-10-08 00:56:13

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

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

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

From your description, it sounds like you should look at the CacheItemUpdateCallback delegate.

If you use this, you can be notified before your item is removed from the cache.

So you can attempt to regenerate the object from your updated XML, and if parsing fails, reinsert the original object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文