Я создаю сайт ASP.NET MVC 2, где я сильно использую параметр OutputCache. Тем не менее, я беспокоюсь: использование такого кэширования может помешать аутентификации.Использование ASP.NET MVC OutputCache при изменении Просмотр содержимого на основе аутентификации пользователя
На всех моих страницах отображается, вошел ли пользователь в систему или нет. Кроме того, в некоторых из моих представлений я делаю фильтрацию на основе роли пользователя, чтобы определить, показывать или не показывать какое-либо содержимое страницы (например, ссылка Edit на одной из моих страниц отображается только пользователям в роли Модератора или Администратор).
Будет ли использование OutputCache вмешиваться в эту динамическую смену моих просмотров? Если да, то как я могу решить эту проблему без исключения кеширования?
Что делать, если у меня есть метод, который не требует авторизации, но добавляет ссылку «Редактировать» внутри представления, если пользователь является модератором? В этом случае я пытаюсь выполнить что-то похожее на то, как работают ссылки, флаг, редактировать и другие кнопки в вопросе или ответе, - не использует SO OutputCache тоже? Спасибо за Ваш ответ! –
Я просто наткнулся на http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/ (о старой проблеме, которая была позже исправлена), что дало мне представление - если OutputCache так плох с этим, возможно ли ** создать собственный атрибут/фильтр кэширования **, который создает разные копии на основе того, был ли пользователь зарегистрирован и какие роли у пользователя есть, или еще лучше, что имя пользователя есть, поскольку я собираюсь написать имя пользователя в верхней части страницы - ** возможно ли это? –
Как правило, плохая идея кэшировать каждого пользователя, так как ваш кеш будет заполнен записями. Если кэширование пончиков важно для вашего сценария, вы также можете использовать фильтр ответов. В начале запроса установите фильтр, который понимает некоторые [!! ПАРАМЕТРЫ ЗАДАЧИ!], Напишите этот шаблон в потоке ответа, а затем в конце запроса ваш фильтр вызовет фактический метод Response.WriteSubstitution(). – Levi