Блокирует ли перезапись URL-адресов статическое кеширование файлов IIS?

Если я активирую модуль перезаписи IIS, счетчик обращений к кэшу файлов не увеличивается.

Я отслеживаю попадания с помощью монитора производительности (perfmon.exe / кэш веб-службы / обращения к кеш-файлу)

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

В обоих случаях запрошенный файл является статическим файлом HTML.

Блокирует ли перезапись URL-адресов статическое кеширование файлов IIS?


person Ugur Catak    schedule 24.02.2013    source источник
comment
В диспетчере IIS перейдите в раздел «Модули» и «Открыть функцию». Справа щелкните Просмотреть упорядоченный список. RewriteModule должен быть внизу, если это не так.   -  person Jamey    schedule 18.10.2013


Ответы (1)


В документации указано, что да , Перезапись IIS может предотвратить кеширование файлов.

Взаимодействие с кэшированием вывода IIS

Модуль перезаписи URL-адресов управляет поведением кэша вывода IIS, чтобы:

Оптимально использовать режим ядра и кэширование вывода ответов в пользовательском режиме для перезаписанных URL-адресов, тем самым повышая производительность веб-приложения, использующего модуль перезаписи URL-адресов. Предотвратить кеширование ответов, когда логика кеширования может быть нарушена из-за перезаписи URL. Модуль управляет кешированием вывода, изменяя определенные свойства кэширования или полностью отключая кеширование. Модуль не может включить кэширование вывода, если оно было отключено конфигурацией IIS или любым другим модулем в конвейере IIS. Кэширование вывода управляется следующим образом:

  1. Модуль всегда устанавливает настройку кеша пользовательского режима variableByHeader = "HTTP_X_ORIGINAL_URL". Это гарантирует, что при включении кэширования в пользовательском режиме модуль учитывает исходный URL-адрес для создания ключа для записи кэша.

  2. Если в наборе правил перезаписи используются серверные переменные со значениями, которые либо постоянны на протяжении всего процесса, либо являются производными от запрошенного URL-адреса, набор правил считается безопасным для кэширования вывода. Это означает, что модуль перезаписи URL-адреса не изменит существующую политику кэширования каким-либо образом, кроме установки variableByHeader, как описано в шаге

Следующие серверные переменные при использовании в правилах перезаписи не влияют на политику кэширования вывода:

«CACHE_URL», «DOCUMENT_ROOT», «HTTP_URL», «HTTP_HOST», «PATH_INFO», «PATH_TRANSLATED», «QUERY_STRING», «REQUEST_FILENAME», «REQUEST_URI», «SCRIPT_NAME_FILENAME», «SCRIPT_NAME_FILENAME», «SCRIPT_NAME_FILENAME», «SCRIPT_NAME_FILENAME», «SCRIPT_NAME_FILENAME», «SCRIPT_NAME_FILENAME» "," URL "," URL_PATH_INFO "," APP_POOL_ID "," APPL_MD_PATH "," APPL_PHYSICAL_PATH "," GATEWAY_INTERFACE "," SERVER_SOFTWARE "," SSI_EXEC_DISABLED "

3. Если набор правил перезаписи использует любую серверную переменную, не упомянутую в приведенном выше списке, набор правил считается небезопасным для кэширования вывода. Это означает, что модуль перезаписи URL-адресов отключит кеширование в режиме ядра для всех запросов, независимо от того, были ли URL-адреса запросов перезаписаны или нет. Кроме того, модуль изменит политику кэширования для кеша пользовательского режима, установив свойство кэшированияvarByValue, чтобы оно содержало объединенную строку всех значений переменных сервера, используемых в наборе правил.

person Adam Caviness    schedule 09.04.2014