Я использую 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 на одном и том же выделенном сервере.
Спасибо!