Por exemplo, o site tem um controle de usuário Header.ascx. Cada página chama esse controle como o "cabeçalho da página". Este controle de usuário pode ser armazenado em cache diretamente para enviar o desempenho. nome do usuário. Nome de login, portanto você não pode usar diretamente o seguinte método de cache:
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>.
Neste momento, você pode usar o método de "armazenar páginas em cache com base em strings personalizadas", como segue:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Em seguida, substitua o método GetVaryByCustomString na classe Global
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if(custom=="HeaderPageKey")
{
//Controle de cabeçalho de cache.ascx
if(context.Request.IsAuthenticated)
{
retornar contexto.Usuário.Identidade.Nome;
}
outro
{
retornar "NoAuthenticated_User";
}
}
retornar base.GetVaryByCustomString (contexto, personalizado);
}
Se o usuário não estiver logado, uma versão será armazenada em cache. Se o usuário já estiver logado, outra versão será armazenada em cache com base no nome de login. solução.
Para a tecnologia de cache acima, consulte http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp
Além disso, este método de cache também é usado em MSPetShop3.0 , diferentes versões são armazenadas em cache com base em Request.Querystring e se você está logado. No entanto, esse cache não parece estar habilitado por padrão.
Fonte: kaka.net