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

Параметры заголовка элемента управления кешем IIS

В настоящее время я работаю над веб-сайтом, доступ к которому осуществляется через https. Недавно мы столкнулись с проблемой, при которой мы не можем просмотреть .pdf файлы или любой другой тип файла, который отправляется как вложение (Content-Disposition:attachment).

В соответствии с База знаний Microsoft это связано с тем, что Cache-Control установлен на no-cache. Однако у нас есть требование, чтобы все страницы полностью перезагружались при каждом посещении, поэтому мы отключили кеширование на всех страницах (через наш код ASP, а не через настройки IIS).

Однако я сделал особый случай этой страницы, которая показывает вложение, и теперь она возвращает заголовок с Cache-Control:private и срок действия установлен на 1 минуту в будущем. Это отлично работает, когда я тестирую его на своем локальном компьютере, используя https. Однако, когда я развертываю его на нашем тестовом сервере и пробую, заголовки ответа все равно возвращаются Cache-Control:no-cache.

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

Может ли кто-нибудь указать мне возможное место, где IIS может устанавливать эти значения заголовка?

РЕДАКТИРОВАТЬ: Оказывается, IIS не было возиться с настройками моего кеша. Скорее, папка, в которой я публиковал, не была той же папкой, из которой служил IIS. Я обнаружил это, когда изучил пути и заметил, что файлы, которые обслуживает IIS, были слишком старыми. Указание IIS на правильную папку устранило все мои проблемы.

Есть несколько мест, которые могут контролировать кеширование в IIS.

Все настройки должны быть сохранены в web.config если соответствующая конфигурация функции может быть сохранена локально (см. Делегирование функций), в противном случае она сохраняется в основном файле конфигурации: RootWeb.config (часть .NET framework, например: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config) и / или ApplicationHost.config (C:\Windows\System32\inetsrv\config\ApplicationHost.config). Запуск Консоль управления IIS (Диспетчер IIS), затем «Редактор конфигурации», затем «Конфигурация поиска» (на боковой панели), и вы сможете увидеть ВСЕ файлы конфигурации, известные IIS, а также выполнить поиск определенных параметров.

  1. Заголовки ответа HTTP - скорее всего, место, о котором нужно позаботиться: может быть пользовательская настройка заголовка, которая явно запрещает кеширование .. или через «Установить общие заголовки ...» на боковой панели / меню содержимого.

  2. Кэширование вывода может также повлиять на заголовки кеширования (я никогда не использовал его сам и не могу сказать больше).

  3. Перезапись URL v2.x также можно использовать для перезаписи заголовков ответов (исходящие правила).

P.S. Этот вопрос будет уместнее задать на ServerFault - это скорее вопрос категории "сисадмин", чем веб-мастеров.

Как я решил свою проблему (поскольку я также отредактировал вопрос, но добавил сюда, чтобы отметить это как решенное).

Оказывается, IIS не возился с настройками моего кеша. Скорее, папка, в которой я публиковал, не была той же папкой, из которой служил IIS. Я обнаружил это, когда исследовал пути и когда заметил, что файлы, которые обслуживает IIS, были слишком старыми. Указание IIS на правильную папку устранило все мои проблемы.

В моем случае оказалось, что «Расширения» в настройке вывода кэширования были «.ext», а не просто «ext», поэтому установленная мною политика не вступила в силу. После этого я также обнаружил, что мне не нужно устанавливать заголовок ответа Cache-Control.