2009-02-27 11 views
1

J'ai Apache configuré pour ajouter un en-tête de cache aux demandes de contenu le plus statique:Avec Apache httpd, comment puis-je configurer aucune mise en cache pour un UserAgent donné?

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 provient 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 aucunCache-Control ou d'autres en-têtes liés 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.

Répondre

4

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 la tête de l'agent utilisateur contient les chaîne JNLP (il existe également une variante insensible à la casse, BrowserMatchNoCase). Ensuite, vous pouvez supprimer tous 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 mettre

Header set Cache-Control no-cache env=ua_in_jnlp 
Header set Expires 0 env=ua_in_jnlp 
+0

Merci. Ceci est exactement ce que je cherchais. Je l'ai compris juste avant votre publication, mais j'ai vu votre message, je vous ai décerné la réponse "correcte" et j'ai supprimé mon message. – Eddie

Questions connexes