Есть ли способ, которым я могу реализовать этот конкретный вид выходного кэша для ASP.NET? - PullRequest
0 голосов
/ 18 октября 2010

Я хочу запустить пользовательскую логику до жизненного цикла страницы, чтобы решить, какую версию кэшированной страницы я хочу предоставить пользователю.

Пример:

Если пользователь не вошел в систему, то я захожу в кеш-словарь, ловлю версию А страницы и обслуживаю пользователя.В противном случае, если оно зарегистрировано, я посмотрю, кэшировала ли я уже версию страницы, специфичной для этого пользователя.Если конкретной кэшированной версии еще не существует, я позволю завершить жизненный цикл, а затем сохраню ее.

Мне нужно управлять различными версиями страницы ичтобы определить, следует ли обслуживать ту или иную версию.

1 Ответ

3 голосов
/ 18 октября 2010

Вы должны быть в состоянии использовать 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);
}
...