OutputCache VaryBy, если пользователь вошел в систему?

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

Это мой текущий код в моем HomeController. Я знаю, что могу использовать VaryByParam и передать параметр, но это не сработает, если пользователи запрашивают корень моего домена. Должен ли я просто использовать MemoryCache для кэширования данных модели?

Я пытался изменить кеш с помощью файлов cookie, как описано здесь OutputCache VaryByCustom значение файла cookie, но я не могу т заставить его работать.

Я думаю, все, что мне нужно, это иметь возможность определить, вошел ли пользователь в систему до того, как будет возвращен OutputCache, а затем я могу перенаправить его на другую страницу, если это так?

[OutputCache(Duration = 604800, Location = System.Web.UI.OutputCacheLocation.Server)]//1 week
public ActionResult Index()
{
    if (HttpContext != null && !String.IsNullOrEmpty(HttpContext.User.Identity.Name))
    {
        var user = userService.GetUserByEmail(HttpContext.User.Identity.Name);
        if (user != null && user.IsUserSubscribed)
        {
             //get model data and show a different view if user is subscribed
        }
        else
        {
            //get model data and show different view if user logged in but not subscribed
        }
    }
    else
    {
        //get model data and show default view
    }
}

person Jimmy    schedule 15.07.2021    source источник
comment
but I can't get it to work. Покажите нам попытку.   -  person mjwills    schedule 15.07.2021
comment
Другой подход - иметь статическую кэшированную оболочку, а затем загружать переменную часть через отдельный запрос AJAX.   -  person mjwills    schedule 15.07.2021