Как с помощью Apache httpd отключить кэширование для данного UserAgent?

StackOverflow https://stackoverflow.com/questions/596520

Вопрос

У меня настроен Apache HTTPD для добавления заголовка кэша к запросам для большей части статического контента:

ExpiresActive On
ExpiresDefault "access plus 1 year"

# Force JNLP and BSH files to expire immediately so updates are checked for
# and seen (We need this so we see changes in the dynamic content in both)
ExpiresByType application/x-java-jnlp-file "now"
ExpiresByType application/x-bsh "now"

Как я могу отключить это кэширование для любого запроса, где UserAgent содержит строку JNLP?Когда запрос поступает от пользовательского агента JNLP (например, «User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") Я не хочу любой Cache-Control или другие заголовки, связанные с кешем, в ответе HTTP.

Я могу найти примеры конфигурации для нескольких вещей на основе пользовательского агента, но не могу понять, как настроить кеширование в зависимости от пользовательского агента.

Это было полезно?

Решение

Твой ExpiresByType директива выглядит хорошей идеей...если этого недостаточно, попробуйте использовать BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

Это устанавливает переменную среды ua_is_jnlp к некоторому значению для любого запроса, заголовок пользовательского агента которого содержит строку JNLP (есть также вариант без учета регистра, BrowserMatchNoCase).Затем вы можете очистить все заголовки кэширования с помощью

Header unset Cache-Control env=ua_in_jnlp
Header unset Expires env=ua_in_jnlp

хотя, если вы хотите полностью отключить кеширование, вам лучше установить

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top