С помощью Apache httpd, как мне настроить отсутствие кэширования для данного UserAgent? - PullRequest
1 голос
/ 27 февраля 2009

У меня есть 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.

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

1 Ответ

4 голосов
/ 28 февраля 2009

Ваша директива 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
...