Añadir un Expira o una cabecera Cache-Control en JSP
-
27-09-2019 - |
Pregunta
¿Cómo agregar un Expires
o un encabezado Cache-Control
en JSP? Quiero añadir un futuro lejano fecha de caducidad en un include página para mis componentes estáticos como imágenes, archivos CSS y JavaScript.
Solución
Para desactivar la caché del navegador de páginas JSP, crear un Filter
que se mapea en una url-pattern
de *.jsp
y hace básicamente lo siguiente en el método 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 este modo, no es necesario CopyPaste esta sobre todas las páginas JSP y el desorden con scriptles .
Para habilitar la caché del navegador para los componentes estáticos como CSS y JS, los puso en una carpeta común como /static
o /resources
y crear un Filter
que se mapea en una url-pattern
de /static/*
o /resources/*
y hace básicamente lo siguiente en el método doFilter()
:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Ver también:
Otros consejos
<%
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
%>
contenedores de servlet como Tomcat vienen con un conjunto de filtros predefinidos. Véase, por ejemplo Expira Filtro . Puede ser más fácil de utilizar uno ya existente que crear su propio filtro similar.