我有一个Asp.Net MVC 5网站。在这个网站上,我有一个相当复杂的页面,并且构建了很多查询。问题是,我想为管理员用户在此页面上添加一些控件(或隐藏一些元素)。我的第一个想法是添加一个JavaScript文件,该文件创建仅限管理员的内容,并通过甜甜圈缓存方法中的<script>
标记添加。但是,虽然每次调用donut cache方法,但如果访问该页面的第一个用户是admin,则会添加内容(因此,之后看到的所有用户都将看到控件,对于admin用户,JavaScript将呈现两次!
我可以为每个元素制作甜甜圈缓存方法,但它突破了创建缓存的重点。如果您每次有人访问该网页时都要创建所有元素,那么缓存网页的重点是什么?
答案 0 :(得分:1)
您可以使用OutputCache的VaryByCustom
属性来区分管理员和普通用户。
在GetVaryByCustomString
global.asax覆盖中,您可以检查HttpContext
,当前Principal
等,以便确定。
通过这种方式,您可以为常规用户提供一个缓存,为管理员提供不同的缓存。