Кэширование ASP.NET MVC зависит от аутентификации - PullRequest
13 голосов
/ 14 ноября 2008

Я использую ASP.NET Preview 5 (скоро будет обновлен до бета-версии) с LINQ2SQL в моем недавно запущенном крошечном веб-приложении .

Я очень гордился своей работой, пока Silverlight.net не разместил ее на первой странице, и он начал принимать более чем скромное количество посетителей.

По какой-то причине пользователи иногда получают «указанный неверный приведенный тип», генерируемый LINQ2SQL - это потому, что неаутентифицированные пользователи обрабатываются как «гостевой» пользователь, а контроллер загружает информацию о пользователе «гостевой» для каждого попадания .

На первой странице вверху есть надпись «Welcome [USERNAME]», которую можно легко кэшировать с помощью Donut Caching .

Тем не менее, посередине находится блок «Что такое Dudlers.com», который должен показываться только неаутентифицированным пользователям, и еще один блок «О вас», который должен показываться только аутентифицированным пользователям. Эти блоки слишком сложны, чтобы их можно было кэшировать с помощью Donut Caching; они слишком разные, это будет очень грязно.

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

Есть ли возможность указать, что кэширование зависит от аутентификации? что-то вроде: [OutputCache (VaryBy = Аутентификация)]

Или есть другое решение, не относящееся к ASP.NET MVC? (возможно, настройка MS SQL)

Надеюсь, мой вопрос понятен. Я использую Windows 2003 и MS SQL 2005 Express на одном и том же выделенном сервере.

Спасибо!

1 Ответ

12 голосов
/ 16 ноября 2008

Вам не нужно использовать механизм кэширования пончиков. ASP.NET имеет параметр VaryByCustom, который позволяет вам определять, как изменять кэширование.

Проверьте это для получения дополнительной информации: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

Должно работать нормально для ASP.NET MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...