Microsoft MVC Preview 4中的OutputCacheFilter是否实际保存操作调用?

时间:2020-03-05 18:39:33  来源:igfitidea点击:

我们使用预览3部署了一个实时,新鲜,时髦的网站,其中包括严格的压力测试。

页面输出缓存是我们的救星,它使我们能够满足性能合同的要求。

我的问题是,动作OutputCacheFilter和页面输出缓存之间有区别吗?

动作输出缓存比页面输出缓存快吗?

解决方案

回答

在内部,OutputCacheAttribute(也称为输出缓存过滤器)使用与页面输出缓存(即@OutputCache指令)相同的内部机制。

因此,它并不比页面输出缓存快。但是,对于MVC,我们实际上不能通过MVC中的@OutputCache指令使用页面输出缓存,因为我们在操作运行后渲染视图(又称页面)。因此,我们将获得很少的收益。

使用输出缓存过滤器,它将执行正确的操作,并且如果结果在输出缓存中,则不执行操作代码。希望能有所帮助。 :)

回答

请注意,如果在标记为要缓存的Action上调用Html.RenderAction(..),则当前存在一个错误。整个页面将被缓存,而不是被缓存的特定操作。我已经在codeplex上报告了这个问题,这似乎是一个已知问题:
调用<%HTML.RenderAction <...>(...); %>到带有[OutputCache(..)]的操作会导致整个页面缓存。