我在使用OutputCache来优化我的页面,但是我不想缓存特定的用户控件,因为它与用户登录相关(如果我访问该页面,我将以另一个用户的身份查看该页面)。
如何实现这一点?
如何实现这一点?
就我个人而言,我使用VaryByCustom属性来为已登录和未登录的用户提供不同的缓存页视图:
<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %>
然后在 global.asax 中放置以下代码:
public override string GetVaryByCustomString(HttpContext context,
string arg)
{
if (arg == "IsLoggedIn")
{
if (context.Request.IsAuthenticated)
{
return "Logged in: " + context.User.Identity.Name;
}
else
{
return "Not Logged In";
}
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}
我想简单地提出一个建议:替换控件怎么样?
http://msdn.microsoft.com/en-us/library/ms228212.aspx
根据 MSDN 网站上的介绍:
替换控件让您能够创建可以动态更新并集成到缓存页中的页面区域... 替换控件为部分页面缓存提供了简化的解决方案。 您可以输出缓存整个页面,然后使用替换控件指定不适用缓存的页面部分。
我个人从未使用过替代控件,但前几天刚好查了一下,它似乎可以在已缓存的页面输出中注入更新的内容。