Блокирует ли перезапись URL статическое кэширование файлов IIS?
Если я активирую IIS Rewrite, модуль File Cache Hits counter не увеличивается.
Я отслеживаю попадания по системному монитору (perfmon.exe / Кэш веб-служб / Хиты файлового кэша)
Если я деактивирую переписывание, "попадания в кэш файлов" обычно увеличиваются в соответствии с алгоритмом кэширования IIS.
Запрашиваемый файл является статическим html-файлом в обоих случаях.
Блокирует ли перезапись URL статическое кэширование файлов IIS?
1 ответ
Документы утверждают, что да, перезапись IIS может предотвратить кеширование файлов.
Взаимодействие с кэшированием вывода IIS
Модуль перезаписи URL управляет поведением кэша вывода IIS, чтобы:
Оптимально использовать режим кэширования ответов в режиме ядра и пользовательском режиме для переписанных URL-адресов, что повышает производительность веб-приложения, использующего модуль перезаписи URL-адресов. Запретить кеширование ответов, когда логика кеширования может быть нарушена из-за перезаписи URL. Модуль управляет кэшированием вывода, либо изменяя определенные свойства кэширования, либо полностью отключая кэширование. Модуль не может включить кэширование вывода, если он был отключен конфигурацией IIS или любым другим модулем в конвейере IIS. Кэширование вывода контролируется следующим образом:
Модуль всегда устанавливает настройку кеша пользовательского режима varByHeader="HTTP_X_ORIGINAL_URL". Это гарантирует, что при включенном кешировании в пользовательском режиме модуль учитывает исходный URL-адрес для создания ключа для записи в кеш.
Если набор правил перезаписи использует серверные переменные со значениями, которые либо постоянны в течение всего жизненного цикла процесса, либо получены из запрошенного URL-адреса, набор правил считается безопасным для кэширования вывода. Это означает, что модуль перезаписи URL не будет изменять существующую политику кэширования никоим образом, кроме установки varByHeader, как описано в шаге
Следующие серверные переменные, используемые в правилах перезаписи, не влияют на политику кэширования вывода:
"CACHE_URL", "DOCUMENT_ROOT", "HTTP_URL", "HTTP_HOST", "PATH_INFO", "PATH_TRANSLATED", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_URI", "SCRIPT_FILED_SCILTENTING", "SCRIPT_FILED_TRIP", "SCRIPT" "," URL "," URL_PATH_INFO "," APP_POOL_ID "," APPL_MD_PATH "," APPL_PHYSICAL_PATH "," GATEWAY_INTERFACE "," SERVER_SOFTWARE "," SSI_EXEC_DISABLED "
3 Если набор правил перезаписи использует какую-либо серверную переменную, не упомянутую в приведенном выше списке, набор правил считается небезопасным для кэширования вывода. Это означает, что модуль перезаписи URL отключит кэширование в режиме ядра для всех запросов независимо от того, были ли перезаписаны URL-адреса запроса или нет. Кроме того, модуль изменит политику кэширования для кэша пользовательского режима, установив в свойстве кэширования varByValue конкатенированную строку всех значений серверных переменных, используемых в наборе правил.