Ajouter un ou un en-tête Expires Cache-Control en JSP
-
27-09-2019 - |
Question
Comment ajouter un Expires
ou un en-tête de Cache-Control
en JSP? Je veux ajouter une date d'expiration de grande avenir dans une page pour inclure mes composants statiques tels que des images, CSS et JavaScript fichiers.
La solution
Pour désactiver le cache du navigateur pour les pages JSP, créez un Filter
qui est mis en correspondance 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 ne avez pas besoin de ce copypaste sur toutes les pages JSP et les encombrer avec scriptlets .
Pour activer le cache du navigateur pour les composants statiques comme CSS et JS, les mettre tous dans un dossier commun comme /static
ou /resources
et créer une Filter
qui est mis en correspondance sur un url-pattern
de /static/*
ou /resources/*
et fait essentiellement ce qui suit dans la méthode doFilter()
:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Voir aussi:
Autres conseils
<%
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
%>