在我的ASP.NET MVC项目中,我有一个UserController
,其Index
操作接受userName
作为服务器配置文件的参数,基于用户名。这些配置文件在幕后进行了大量的处理,因此我正在考虑一种有效的缓存方式。我最初的想法是这样的:
if (!Request.IsAuthenticated() || (Request.IsAuthenticated() && userName != User.Identity.Name))
//browser cache
else
//no cache
end if
因此,用户X
会收到自己个人资料的非缓存版本,但会收到所有其他个人资料的浏览器缓存版本。未登录的用户还会收到浏览器缓存版本的配置文件(尽管我还不确定在登录时是否可以访问用户X访问其配置文件,然后在登录时从同一浏览器重新访问)。如果我咆哮错误的树,我可以接受其他建议。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
为了给所有用户提供相同的网站体验,我建议您为所有用户(无论登录还是退出)提供相同的内容。
因此,当您拥有配置文件的缓存版本时,请将此配置文件发送给请求用户。如果您没有配置文件,请从数据库中获取它。
使用这种方法,您应该在以下时间使缓存中的配置文件无效:
生命周期超过
个人资料很脏(同时更新)
如果它是脏的,您可以在更新成功后将更新的版本保存在缓存中。