Mit Apache, wie konfiguriere ich kein Caching für einen bestimmten Useragenten?
-
09-09-2019 - |
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.
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
seinHeader set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp