Я сделал GetVaryByCustomString, который возвращает:OutputCache пользователя. Ошибка, когда я выйти из системы
context.User.Identity.IsAuthenticated.ToString();
Но у меня есть большая проблема, представьте себе этот поток:
Пользователь (или кто) доступ к домашней странице. GetVaryByCustomString вернет «ложь» и кэш. Каждый раз, когда кто-то спрашивает, изменилась ли домашняя страница, вернется 304.
Я захожу на сайт и перехожу на домашнюю страницу, GetVaryByCustomString возвращает «true», тогда кеш не используется. Каждый раз, когда я перехожу на главную страницу, ASP.NET возвращает мне 304.
Я выхожу из системы и перехожу на домашнюю страницу, теперь GetVaryByCustomString возвращает 304 из-за первого шага, но OutputCache не знает, что кеш что у меня есть, из зарегистрированного пользователя.
Если я нажимаю Ctrl + F5, это работает, так как проблема в браузере/сервере, кеш-сервер на стороне сервера. Но он возвращает 304, и у меня зарегистрирована страница с кэшем.
Есть любое решение? Или мне нужно остановить кэширование аутентифицированных пользователей?
UPDATE: Я думаю, что кеш для изменяемых значений просто не работает. Необходимо, чтобы браузеры также кэшировали эти значения ... И не существует Вари с помощью Cookies ...
Лично я рекомендую не кэшировать для аутентифицированных пользователей (но все же кэшировать для них статические ресурсы). Вот как это делает Stack Overflow/Stack Exchange. –
Я пытался кэшировать только на сервере для пользователей auth, но, похоже, у него ошибка, возвращающая 304 + no-cache. Теперь я не кэширую для зарегистрированных пользователей, и все в порядке. –