如何不缓存ASP.NET用户控件?

gsb*_*gsb 5 asp.net caching

我在我的页面中使用OutputCache,它具有用户控件,但我不想缓存此特定用户控件,因为它与用户登录相关(如果我访问该页面,我看到该页面就好像我通过了身份验证一样另一个用户).

我怎样才能做到这一点?

Chr*_*ins 10

我个人使用VaryByCustom属性为登录和注销用户提供不同的缓存页面视图:

<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %>
Run Code Online (Sandbox Code Playgroud)

然后在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);
    }

}
Run Code Online (Sandbox Code Playgroud)

我只是想把它扔出去.替代控制怎么样?

http://msdn.microsoft.com/en-us/library/ms228212.aspx

根据msdn网站:

使用"替换"控件可以在页面上创建可以动态更新的区域,然后将其集成到缓存页面中.... Substitution控件为缓存大部分内容的页面提供了部分页面缓存的简化解决方案.您可以输出缓存整个页面,然后使用"替换"控件指定不受缓存限制的页面部分.

我从来没有亲自使用过替换控件,但是我刚好在前几天查看它,听起来它可以以某种方式将更新的内容注入到其他缓存的页面输出中.