Comment ajouter un Expires
ou un Cache-Control
en-tête dans JSP? Je veux ajouter une date d'expiration très lointaine dans une page d'inclusion pour mes composants statiques tels que les images, les fichiers CSS et JavaScript.
Pour désactiver le cache du navigateur pour les pages JSP, créez un Filter
qui est mappé sur un url-pattern
De *.jsp
Et fait essentiellement ce qui suit dans la méthode doFilter()
:
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
De cette façon, vous n'avez pas besoin de copier-coller cela sur toutes les pages JSP et de les encombrer avec scriptlets.
Pour activer le cache du navigateur pour les composants statiques comme CSS et JS, placez-les tous dans un dossier commun comme /static
Ou /resources
Et créez un Filter
qui est mappé sur un url-pattern
De /static/*
Ou /resources/*
Et effectue essentiellement les opérations suivantes dans la méthode doFilter()
:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Voir aussi:
<%
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<%
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //prevents caching at the proxy server
%>
Les conteneurs de servlets comme Tomcat sont livrés avec un ensemble de filtres prédéfinis. Voir par exemple Expires Filter . Il peut être plus facile d'utiliser un filtre existant que de créer votre propre filtre similaire.