Я пишу сайт ASP.NET MVC, который предоставляет пользователям возможность создавать учетные записи и входить в систему. Поскольку я также хочу активно кэшировать сайт, У меня возникают проблемы при смешивании кэширования с аутентификацией..
На каждой странице вверху, если пользователь вошел в систему, я вывожу его имя пользователя, ссылку на его профиль и ссылку для выхода.Если они не вошли в систему, я выведу стандартную ссылку для входа.Кроме того, на самой странице некоторые материалы не показываются пользователям, не прошедшим проверку подлинности, в то время как другие материалы зависят от того, какой пользователь вошел в систему.
Сначала я попытался решить эту проблему некоторое время назад, спросив команду переполнения стека, какони решили проблему.Джефф ответил, что они в основном не кэшируют пользователей, не прошедших проверку подлинности.Итак, я написал атрибут, который наследуется от OutputCacheAttribute, но отменяет кэширование, если пользователь вошел в систему .
В настоящее время я использую этот атрибут, но я получаю неверныйрезультаты в некоторых случаях.Например, пользователь может зайти на какую-то страницу, затем войти в нее, а затем снова зайти на страницу, чтобы увидеть ссылку для входа вверху, а не свое имя пользователя.
Вот некоторые решения, которые я рассматриваю:
- Установка типа
HttpCacheability
или Cache-Control
на private
вместо public
. Таким образом, ответ кэшируется только на стороне клиента.Это решит проблему?Если это так, повлияет ли это на эффективность кеширования?Я заметил, что Stack Overflow, похоже, использует public
, однако. - Настройка параметра VaryByCustom для кэширования по-разному для каждого пользователя , например в этом уроке ,Поможет ли это, сохраняя при этом эффективность кэширования?
Заранее спасибо!