Com Apache httpd, como faço para configurar nenhum cache para um determinado UserAgent?
-
09-09-2019 - |
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.
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