Frage

Ich habe Apache konfiguriert ist, einen Cache-Header auf Anfragen für die meisten statischen Inhalte hinzuzufü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 deaktivieren Sie dieses Caching für jede Anforderung, wo der UserAgent der Zeichenfolge JNLP enthält? Wenn die Anforderung aus dem User-Agent kommt JNLP (zum Beispiel "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") Ich will nicht jeder Cache-Control oder anderer Cache-bezogene Header auf der HTTP-Antwort.

kann ich Konfigurationsbeispiele für einige Dinge finden, basierend auf User-Agent, aber ich kann nicht herausfinden, wie das Caching zu konfigurieren, je nach User-Agent.

War es hilfreich?

Lösung

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

BrowserMatch JNLP ua_is_jnlp

Damit wird die Umgebungsvariable ua_is_jnlp bis zu einem gewissen Wert für jede Anforderung, deren User-Agenten-Header enthält den Zeichenfolge JNLP (es gibt auch eine Groß- und Kleinschreibung Variante 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

sein
Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top