我正在尝试使用[OutputCache(Duration = 3600]
注释为匿名用户缓存控制器中的操作。 E.g:
[OutputCache(Duration = 3600)]
[ActionName("Test")]
public async Task<ViewResult> Test() {...}
在我的研究中,我发现了一种非常聪明的方法来使用ActionMethodSelectionAttribute来实现这一点,但是一旦匿名操作被缓存,它就适用于匿名和授权版本。
我需要为首页和信息页面进行此缓存。在所有情况下,顶级菜单对于授权用户将是不同的。问题是菜单是_Layout中的一部分添加,因此与其余操作一起缓存。 E.g:
<body>
<div class="contain-to-grid oversizedContainer">
@Html.Action("Menu", "Framework")
</div>
@RenderBody()
第二个问题是在信息页面上显示的一些内容将取决于用户是否被autherher(使用razor @if!Request.IsAuthenticated检查)和视图模型中的数据(@Model)。
我更喜欢不需要我重写所有观点的东西。
PS!我知道VaryByParam
,但这些操作不接受任何参数,而是直接链接。