Pergunta

Eu tenho Apache HTTPD configurado para adicionar um cabeçalho de cache para pedidos de mais conteúdo estático:

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"

Como posso desativar esse cache para qualquer solicitação onde o UserAgent contém o JNLP corda? Quando o pedido vem do User Agent JNLP (por exemplo, "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") Eu não quero qualquer Cache-Control ou outros cabeçalhos de cache relacionadas na resposta HTTP.

posso encontrar exemplos de configuração para várias coisas com base no agente de usuário, mas não consigo descobrir como caching configure dependendo do agente de usuário.

Foi útil?

Solução

Seus ExpiresByType directiva parece uma boa ideia ... se isso não for suficiente, então tente usar BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

Isso define a variável ua_is_jnlp ambiente para algum valor para qualquer pedido cuja usuário agente cabeçalho contém o JNLP string (há também uma variante case-insensitive, BrowserMatchNoCase). Depois, você pode limpar os cabeçalhos de cache com

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

embora se você quiser desabilitar o armazenamento completo, você seria melhor fora definindo

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top