缓存页面的仅限管理员的内容

时间:2014-08-12 08:44:22

标签: c# javascript asp.net asp.net-mvc caching

我有一个Asp.Net MVC 5网站。在这个网站上,我有一个相当复杂的页面,并且构建了很多查询。问题是,我想为管理员用户在此页面上添加一些控件(或隐藏一些元素)。我的第一个想法是添加一个JavaScript文件,该文件创建仅限管理员的内容,并通过甜甜圈缓存方法中的<script>标记添加。但是,虽然每次调用donut cache方法,但如果访问该页面的第一个用户是admin,则会添加内容(因此,之后看到的所有用户都将看到控件,对于admin用户,JavaScript将呈现两次!

我可以为每个元素制作甜甜圈缓存方法,但它突破了创建缓存的重点。如果您每次有人访问该网页时都要创建所有元素,那么缓存网页的重点是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用OutputCache的VaryByCustom属性来区分管理员和普通用户。

GetVaryByCustomString global.asax覆盖中,您可以检查HttpContext,当前Principal等,以便确定。

Source

通过这种方式,您可以为常规用户提供一个缓存,为管理员提供不同的缓存。