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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top