Domanda

Ho Apache HTTPD configurato per aggiungere un'intestazione cache per le richieste di contenuto più statico:

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"

Come posso disattivare questa cache per ogni richiesta in cui la UserAgent contiene la stringa di JNLP? Quando la richiesta proviene dalla User Agent JNLP (ad esempio "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") Io non voglio qualsiasi Cache-Control o altre intestazioni di cache legati alla risposta HTTP.

posso trovare esempi di configurazione per diverse cose sulla base di user agent, ma non riesco a capire come configurare la cache a seconda dell'agente utente.

È stato utile?

Soluzione

Il tuo direttiva ExpiresByType si presenta come una buona idea ... se questo non bastasse, poi provare a utilizzare BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

Questo imposta la variabile ambiente ua_is_jnlp ad un certo valore per qualsiasi richiesta cui utente agente intestazione contiene la stringa JNLP (esiste anche una variante case-insensitive, BrowserMatchNoCase). Quindi è possibile cancellare tutte le intestazioni di cache con

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

anche se se si desidera disabilitare la cache del tutto, si sarebbe meglio impostare

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top