Я пытаюсь сделать так, чтобы моя домашняя страница загружалась как можно быстрее, поэтому я хочу использовать 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
}
}
but I can't get it to work.
Покажите нам попытку. - person mjwills   schedule 15.07.2021