Вы должны быть в состоянии использовать VaryByCustom
для этого и просто позволить ASP.NET беспокоиться о получении правильной версии страницы из кэша и т. Д.
На самой странице ...
<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="LoggedInUser" %>
И в вашем файле Global.asax ...
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "LoggedInUser")
{
if (UserIsLoggedIn())
{
return "LoggedInUser:" + GetUserNameOrSomeOtherUniquePerUserString();
}
else
{
return "LoggedInUser:NONE";
}
}
return base.GetVaryByCustomString(context, custom);
}