Max*_*sky 8 c# asp.net asp.net-mvc caching outputcache
我正在编写一个ASP.NET MVC站点,其中包括用户创建帐户和登录的可能性.由于我还想积极地缓存该站点,我在将缓存与身份验证混合时遇到了一些麻烦.
在每个页面的顶部,如果用户已登录,我会输出其用户名,指向其个人资料的链接以及注销链接.如果他们没有登录,我输出一个标准的登录链接.此外,在页面本身中,某些内容不会显示给未经身份验证的用户,而其他内容则取决于登录的用户.
我前一次尝试通过询问Stack Overflow团队如何解决问题来解决这个问题.杰夫回答说,对于未经身份验证的用户,他们基本上根本没有缓存.因此,我编写了一个派生自OutputCacheAttribute的属性,但如果用户已登录则取消缓存.
目前,我正在使用该属性,但在某些情况下我得到的结果不正确.例如,用户可以访问某个页面,然后登录,然后再次访问该页面,只能看到顶部的登录链接,而不是他们的用户名.
以下是我正在考虑的一些解决方案:
HttpCacheability
或Cache-Control
键入private
,而不是public
.这样,响应仅缓存在客户端.这会解决这个问题吗?如果是这样,这会对缓存效率产生影响吗?但是,我注意到Stack Overflow似乎正在使用public
.提前致谢!
根据应用程序的结构,缓存数据而不是视图可能有意义.
由于视图非常简单,并且数据库访问通常占用呈现页面所需的大部分时间,因此您可以通过在控制器中缓存模型来获得输出缓存的大部分好处,并且视图的任何无法访问的部分都不会受到影响,因此您可以缓存经过身份验证的用户正在查看的公共内容
还有一些方法可以使输出缓存与部分视图一起工作,但在我看来,它们增加了比真正合理的复杂性.
归档时间: |
|
查看次数: |
1841 次 |
最近记录: |