MVC5缓存缓存用户的会话,我该如何防止这种情况?

时间:2016-05-11 23:06:33

标签: asp.net-mvc caching asp.net-mvc-5

当我将缓存属性添加到控制器的ActionResult时,如下所示:

[OutputCache(CacheProfile = "Cache1Hour")] 

和Web.config中的配置文件:

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Cache1Hour" duration="3600" />
    </outputCacheProfiles>
  </outputCacheSettings>      
</caching>

它会缓存用户与该页面的会话,因此该网站会在右上角显示用户的名称,它会显示缓存的用户而不是当前用户。 如何防止这种情况?我在MVC 3网站上没有这个问题。

1 个答案:

答案 0 :(得分:0)

varyByHeader="*"添加到Web.config中的缓存配置文件似乎有效,因为标头包含会话cookie,但这会导致它为每个用户缓存一个页面,可能导致缓存溢出。

https://msdn.microsoft.com/en-us/library/system.web.configuration.outputcacheprofile.varybyheader(v=vs.110).aspx

另一种选择可能是使用缓存用户控件输出的多个版本 https://msdn.microsoft.com/en-us/library/k4he1ds5(v=vs.110).aspx