Я хотел бы кэшировать выходные данные своих действий MVC. Однако:Кэширование вывода действий MVC, но использование кешированной версии только для аутентифицированных пользователей
1) Если я применяю OutputCacheAttribute
во всем мире, это опасно, поскольку он кэширует все для всех пользователей.
2) Если я применил OutputCacheAttribute
по всему миру, а затем применил атрибут Authorize
к тем действиям, требующим авторизации, которые все еще не решают проблему. Все выходные данные кэшируются независимо от того, был ли пользователь авторизован или нет.
3) Если я применил OutputCacheAttribute
(не глобально, но) только при определенных действиях, и у вас есть AuthorizeAttribute
для всех действий, требующих авторизации, тогда нет угрозы безопасности, но есть стоимость исполнения. Каждая страница, требующая проверки подлинности, должна будет сделать новый запрос Http.
Я хочу найти среднюю землю, чтобы выбранные страницы и/или выбранные типы запросов (HTTP GET) были кешированы на клиенте, но только если пользователь аутентифицирован. Если пользователь выходит из системы и обращается к URL-адресу кешированной страницы/действия, он не должен видеть содержимое.
Есть ли способ реализовать это?
-1 на самом деле? Я просто тестировал это, и он работает. Неавторизованные пользователи получают новую копию сервера по каждому запросу, а аутентифицированные пользователи получают кешированную копию. Это точно так же, как мой предыдущий ответ без фактического кода. – danludwig