Назад | Перейти на главную страницу

ARR - динамически отключать кеширование диска для определенных запросов (аутентифицированные пользователи)

Речь идет о маршрутизации запросов приложений и динамическом отключении кэширования диска для определенных запросов (когда запросы поступают от пользователей, прошедших проверку подлинности; возможность проверки подлинности может быть решена с помощью специального кода).

В моей настройке есть сервер, на котором запущен ARR, отправляющий запросы на сайт ASP.NET MVC на другом сервере. Сайт использует аутентификацию с помощью форм (а иногда и базовую аутентификацию HTTP), поэтому аутентификация происходит на сайте MVC, а не в ARR: в основном, когда пользователь аутентифицирует сайт, создает файл cookie аутентификации с помощью форм.

Я бы хотел, чтобы в ARR произошло следующее:

Как можно иметь правило конфигурации кеша для этого сценария? Я пробовал несколько способов:

Заранее спасибо!

Я опубликовал это из Форумы IIS потому что там никто не ответил.

Вот как я это решил.

Мы должны помнить о следующих предпосылках:

  • ARR идентифицирует кешированные элементы по их URL (который, в зависимости от конфигурации, включает строку запроса; это должна быть конфигурация).
  • Во время запроса ARR может быть проинструктировано не кэшировать вывод текущего запроса.
  • Если вывод текущего запроса (URL-адреса) был кэширован до этого, я не знаю способа указать ARR не использовать кешированную версию.

Основная идея состоит в том, чтобы изменить 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