我有这段代码:
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 86400, VaryByParam = "*")]
public ActionResult GetData(MyParams myParams)
{
return GetDataEx(myParams);
}
在我的网络服务器上缓存一堆Json。
我看到on this page,它说
无法保证在指定的时间内缓存内容。当内存资源变低时,缓存会开始自动驱逐内容。
有什么办法可以在因为内存资源不足而将此项从teh缓存中逐出时获得特定的回调。我没有看到缓存工作正常,但我的猜测是我的内存耗尽,但如果我有这个回调,我可以肯定地说。
答案 0 :(得分:1)
使用响应输出缓存时,无法在内容过期时收到通知。说实话,你不应该真的关心,如果内容过期,控制器动作将被简单地命中,新内容再次被缓存。另请注意,根据您要配置此输出缓存的位置,如果它位于中间代理服务器或客户端浏览器的下游,则缓存过期完全超出您的控制范围。
如果要手动将对象缓存到ASP.NET缓存中,则可以注册CacheItemRemovedCallback,该项将在删除项时执行,但这不适用于您在此处使用的响应输出缓存