对于User X,提供配置文件X的非缓存版本和其他(!X)配置文件ASP.NET MVC的缓存版本

时间:2015-08-27 15:33:41

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

在我的ASP.NET MVC项目中,我有一个UserController,其Index操作接受userName作为服务器配置文件的参数,基于用户名。这些配置文件在幕后进行了大量的处理,因此我正在考虑一种有效的缓存方式。我最初的想法是这样的:

if (!Request.IsAuthenticated() || (Request.IsAuthenticated() && userName != User.Identity.Name))
    //browser cache
else
    //no cache
end if

因此,用户X会收到自己个人资料的非缓存版本,但会收到所有其他个人资料的浏览器缓存版本。未登录的用户还会收到浏览器缓存版本的配置文件(尽管我还不确定在登录时是否可以访问用户X访问其配置文件,然后在登录时从同一浏览器重新访问)。如果我咆哮错误的树,我可以接受其他建议。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

为了给所有用户提供相同的网站体验,我建议您为所有用户(无论登录还是退出)提供相同的内容。

因此,当您拥有配置文件的缓存版本时,请将此配置文件发送给请求用户。如果您没有配置文件,请从数据库中获取它。

使用这种方法,您应该在以下时间使缓存中的配置文件无效:

  • 生命周期超过

  • 个人资料很脏(同时更新)

如果它是脏的,您可以在更新成功后将更新的版本保存在缓存中。