2009-02-27 2 views
1

Ich habe:Mit Apache httpd, wie konfiguriere ich kein Caching für einen bestimmten UserAgent? Apache konfiguriert ist, einen Cache-Header auf Anfragen für die meisten statischen Inhalt hinzufügen

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" 

Wie kann ich dieses Caching für jede Anforderung zu deaktivieren, wenn die UserAgent die Zeichenfolge JNLP enthält? Wenn die Anfrage vom User Agent JNLP kommt (zum Beispiel "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12"), möchte ich keine beliebigeCache-Control oder andere Cache-bezogene Header in der HTTP-Antwort.

Ich kann Konfigurationsbeispiele für verschiedene Dinge finden, basierend auf Benutzer-Agent, aber ich kann nicht herausfinden, wie Caching je nach Benutzer-Agent zu konfigurieren.

Antwort

4

Ihre ExpiresByType Richtlinie sieht aus wie eine gute Idee ... wenn das nicht genug ist, dann versuchen Sie BrowserMatch mit:

BrowserMatch JNLP ua_is_jnlp 

Dies setzt die Umgebungsvariable ua_is_jnlp bis zu einem gewissen Wert für jede Anforderung, deren User-Agent-Header enthält die String JNLP (es gibt auch eine Variante ohne Berücksichtigung der Groß- und Kleinschreibung, BrowserMatchNoCase). Dann können Sie alle Caching-Header löschen mit

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

obwohl, wenn Sie Caching vollständig deaktivieren möchten, dann würden Sie besser dran Einstellung

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

Dank. Genau das habe ich gesucht. Ich habe es kurz vor deinem Post herausgefunden, aber dann deinen Post gesehen, dir das Häkchen "richtige Antwort" gegeben und meinen Post gelöscht. – Eddie

Verwandte Themen