Con servidor web Apache, cómo configuro sin almacenamiento en caché para un agente de usuario dado?

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

Pregunta

Tengo Apache HTTPD configurado para añadir una cabecera caché a las solicitudes de contenido más estática:

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"

¿Cómo puedo desactivar la caché para cualquier solicitud donde el UserAgent contiene el JNLP cuerda? Cuando la solicitud proviene del agente de usuario JNLP (por ejemplo, "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") no quiero cualquier Cache-Control u otras cabeceras relacionadas con caché en la respuesta HTTP.

No puedo encontrar ejemplos de configuración para varias funciones, según el agente de usuario, pero no puedo encontrar la manera de configurar el almacenamiento en caché en función del agente de usuario.

¿Fue útil?

Solución

Su directiva ExpiresByType parece una buena idea ... si eso no es suficiente, entonces trate de usar BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

Esto establece la variable de entorno ua_is_jnlp a algún valor para cualquier solicitud cuyo usuario agente de cabecera contiene el JNLP cadena (también hay una variante de mayúsculas y minúsculas, BrowserMatchNoCase). A continuación, puede borrar cualquiera de las cabeceras de caché con

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

A pesar de que si se quiere deshabilitar el caché del todo, que sería mejor establecer

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top