Речь идет о маршрутизации запросов приложений и динамическом отключении кэширования диска для определенных запросов (когда запросы поступают от пользователей, прошедших проверку подлинности; возможность проверки подлинности может быть решена с помощью специального кода).
В моей настройке есть сервер, на котором запущен ARR, отправляющий запросы на сайт ASP.NET MVC на другом сервере. Сайт использует аутентификацию с помощью форм (а иногда и базовую аутентификацию HTTP), поэтому аутентификация происходит на сайте MVC, а не в ARR: в основном, когда пользователь аутентифицирует сайт, создает файл cookie аутентификации с помощью форм.
Я бы хотел, чтобы в ARR произошло следующее:
Как можно иметь правило конфигурации кеша для этого сценария? Я пробовал несколько способов:
Заранее спасибо!
Я опубликовал это из Форумы IIS потому что там никто не ответил.
Вот как я это решил.
Мы должны помнить о следующих предпосылках:
Основная идея состоит в том, чтобы изменить URL-адрес запроса или, точнее, переписать его по-другому с помощью IIS URL Rewrite, в зависимости от того, аутентифицирован пользователь или нет. Неаутентифицированные пользователи получают все страницы, обслуживаемые, например, / my-page? Authenticated = false и аутентифицированные с / my-page? authenticated = true. Страницы будут кэшироваться только для анонимных пользователей, поэтому ARR не найдет подходящей записи в кеше для аутентифицированных пользователей. Таким образом, третий вопрос решен. С другой стороны, строка запроса, которую вы прикрепляете к URL-адресам, может отображаться в теле HTML, их следует удалить с помощью IIS URL Rewrite.
Чтобы указать ARR не кэшировать текущий запрос, установите для переменной сервера ARR_CACHE_CONTROL_OVERRIDE значение «1, no-cache» (это можно сделать из правил перезаписи).
Вы можете определить, прошел ли пользователь проверку подлинности с помощью IIS URL Rewrite IRewriteProvider (см. руководство), то есть вы можете использовать вывод такого провайдера, чтобы по-разному переписать URL-адрес для аутентифицированных и анонимных пользователей.
Надеюсь, это кому-то поможет.
Настройка Cache-control работает только с HTTP / 1.1, чтобы отключить кеширование для старых браузеров IE, вам необходимо настроить
В следующей статье содержится более подробная информация об этом: Отключить кеширование в ARR