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(..)]的操作会导致整个页面缓存。