Question

J'ai Apache configuré pour ajouter un en-tête de cache aux demandes de contenu le plus statique:

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"

Comment puis-je désactiver cette mise en cache pour toute demande où le UserAgent contient la chaîne JNLP? Lorsque la demande vient de l'agent utilisateur JNLP (par exemple "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") Je ne veux pas any Cache-Control ou autres en-têtes liées au cache sur la réponse HTTP.

Je peux trouver des exemples de configuration pour plusieurs choses basées sur l'agent utilisateur, mais je ne peux pas comprendre comment configurer la mise en cache en fonction de l'agent utilisateur.

Était-ce utile?

La solution

Votre directive ExpiresByType ressemble à une bonne idée ... si cela ne suffit pas, essayez d'utiliser BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

Ceci définit la variable d'environnement ua_is_jnlp à une certaine valeur pour toute demande dont l'entête contient l'agent utilisateur la chaîne JNLP (il y a aussi une variante insensible à la casse, BrowserMatchNoCase). Ensuite, vous pouvez effacer les en-têtes de mise en cache avec

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

bien que si vous souhaitez désactiver la mise en cache entièrement, vous feriez mieux de partir

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top