无论如何,在使用outputcache属性时检测某个控制器动作何时被驱逐

时间:2011-07-10 12:19:43

标签: asp.net-mvc outputcache cache-control

我有这段代码:

    [AcceptVerbs(HttpVerbs.Get)]
    [OutputCache(Duration = 86400, VaryByParam = "*")]
    public ActionResult GetData(MyParams myParams)
    {
        return GetDataEx(myParams);
    }

在我的网络服务器上缓存一堆Json。

我看到on this page,它说

无法保证在指定的时间内缓存内容。当内存资源变低时,缓存会开始自动驱逐内容

有什么办法可以在因为内存资源不足而将此项从teh缓存中逐出时获得特定的回调。我没有看到缓存工作正常,但我的猜测是我的内存耗尽,但如果我有这个回调,我可以肯定地说。

1 个答案:

答案 0 :(得分:1)

使用响应输出缓存时,无法在内容过期时收到通知。说实话,你不应该真的关心,如果内容过期,控制器动作将被简单地命中,新内容再次被缓存。另请注意,根据您要配置此输出缓存的位置,如果它位于中间代理服务器或客户端浏览器的下游,则缓存过期完全超出您的控制范围。

如果要手动将对象缓存到ASP.NET缓存中,则可以注册CacheItemRemovedCallback,该项将在删除项时执行,但这不适用于您在此处使用的响应输出缓存