使用[OutputCache]在Actions / pages上提供管理 - 在mvc3中

时间:2011-12-09 19:08:11

标签: asp.net-mvc-3 caching authorization

我们已经提出了3个选项,用于在带有缓存的Actions /页面上提供管理按钮,并想知道是否还有其他选项或性能/内存/可用性问题需要注意:

  1. 甜甜圈洞缓存 - http://haacked.com/archive/2009/05/12/donut-hole-caching.aspx
  2. VaryByCustom - http://visitmix.com/writings/using-varybycustom-with-outputcache-in-asp-net-mvc-to-support-caching-for-logged-in-users
  3. 创建单独的管理操作/页面
  4. 编辑:有没有办法“超载”动作?即知道是否有办法调用一个具有非管理员用户的[OutputCache]属性的Action和一个没有[strong> admin 用户。

    背景:我们有一个非常简单的博客,并希望允许管理用户编辑/删除帖子并批准评论。因此,我们使用asp.net MVC3 razor: display actionlink based on user role - “.If(User.IsInRole(”Administrators“))”中显示的解决方案添加了仅供管理用途呈现的按钮。

    然后,我们将[OutputCache(Duration = 30)]添加到该Action,发现任何人都会看到Admin版本或plainer - 取决于在缓存超时后碰巧是第一个请求页面的人。咄...

2 个答案:

答案 0 :(得分:1)

我们最终选择了“3.创建单独的管理操作/页面”选项。

这使我们可以选择为管理创建单独的网站/子域并简化缓存结构 - 我们可能不会在管理页面上进行任何缓存。

答案 1 :(得分:0)

这可能只是您的问题编辑的部分答案:

AFAIK,你只能创建同一个动作方法的2个重载:其中一个必须是HttpPost,另一个必须是HttpGet,它们(当然)必须有不同的参数才能编译。