Con Apache httpd, come faccio a configurare alcun caching per un dato UserAgent?
-
09-09-2019 - |
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.
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