Jetty a un paramètre CacheControl (peut être spécifié webdefault.xml) qui détermine le comportement de mise en cache des clients (en affectant les en-têtes envoyés aux clients).
Est-ce que Tomcat a une option similaire? En bref, je veux désactiver la mise en cache de toutes les pages fournies par un serveur Tomcat et / ou par une application Web spécifique?
Mettre à jour
Veuillez noter que je ne fais pas référence à la mise en cache côté serveur. Je veux que le serveur dise à tous les clients (navigateurs) de ne pas utiliser leur propre cache et de toujours récupérer le contenu du serveur. Je veux le faire pour toutes les ressources, y compris les ressources statiques (.css, .js, etc.) à la fois.
Semblable à l’article ci-dessus, sauf qu’il y a quelques problèmes avec ce code. Cela désactivera toute la mise en cache du navigateur:
import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; public class CacheControlFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) response; resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT"); resp.setDateHeader("Last-Modified", new Date().getTime()); resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"); resp.setHeader("Pragma", "no-cache"); chain.doFilter(request, response); } }
puis mappez dans web.xml comme décrit dans la réponse de Stu Thompson .
Étant donné que Tomcat 7 contient un conteneur, le filtre expirant peut vous aider. Voir:
ExpiresFilter est un port de l’API Java Servlet de Apache mod_expires . Ce filtre contrôle le paramètre de l’en-tête HTTP Expires et la directive
max-age
de l’enCache-Control
tête HTTPCache-Control
dans les réponses du serveur. La date d’expiration peut être définie par rapport à l’heure de la dernière modification du fichier source ou à l’heure de l’access au client.
ExpiresFilter org.apache.catalina.filters.ExpiresFilter ExpiresByType image access plus 10 days ExpiresByType text/css access plus 10 hours ExpiresByType application/javascript access plus 10 minutes ExpiresDefault access plus 0 seconds ExpiresFilter /* REQUEST
Je ne crois pas qu’il existe une configuration pour ce faire. Mais il ne devrait pas y avoir beaucoup d’effort pour écrire un filtre pour définir l’en-tête Cache-Control sur une base WebApp. Par exemple:
public class test implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); ((StatusResponse)response).setHeader("Cache-Control", "max-age=0, private, must-revalidate"); } public void destroy() {} public void init(FilterConfig arg0) throws ServletException {} }
Et vous placeriez cet extrait dans le fichier web.xml
votre application Web.
SetCacheControl ch.dietpizza.cacheControlFilter SetCacheControl /*
Il y a en fait plusieurs éléments dans la configuration de Tomcat qui affectent directement cela. Voir la documentation à l’ adresse http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html par exemple.
Atlassian recommande les deux instructions suivantes pour activer la mise en cache côté navigateur afin que Microsoft Internet Explorer puisse télécharger et afficher correctement les documents joints:
peut-être ce que vous recherchez:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Context%20Parameters
cachingAllowed : If the value of this flag is true, the cache for static resources will be used. If not specified, the default value of the flag is true.
Supprimez également le dossier de cache de l’application dans / work / Catalina / localhost après avoir modifié cet indicateur.
Le seul paramètre que je connaisse est disableProxyCaching
sur les éléments
. Voir ici