Adicione um expiração ou um cabeçalho de controle de cache no JSP
-
27-09-2019 - |
Pergunta
Como você adiciona um Expires
ou a Cache-Control
Cabeçalho no JSP? Quero adicionar uma data de expiração de futura distante em uma página de inclusão para meus componentes estáticos, como imagens, CSS e arquivos JavaScript.
Solução
Para desativar o cache do navegador para páginas JSP, crie um Filter
que é mapeado em um url-pattern
do *.jsp
e faz basicamente o seguinte no doFilter()
método:
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.
Dessa forma, você não precisa copypaste sobre todas as páginas JSP e bagunçar -as com roteiros.
Para ativar o cache do navegador para componentes estáticos como CSS e JS, coloque -os em uma pasta comum como /static
ou /resources
e crie a Filter
que é mapeado em um url-pattern
do /static/*
ou /resources/*
e faz basicamente o seguinte no doFilter()
método:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Veja também:
Outras dicas
<%
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
%>
Contêineres de servlet como o Tomcat vêm com um conjunto de filtros predefinidos. Veja, por exemplo Expira o filtro. Pode ser mais fácil usar um existente do que criar seu próprio filtro semelhante.