Aggiungere un un'intestazione Cache-Control in JSP scade o
-
27-09-2019 - |
Domanda
Come si fa ad aggiungere un Expires
o un'intestazione Cache-Control
in JSP? Voglio aggiungere un lontano futuro la data di scadenza in una pagina includono per i miei componenti statici come immagini, CSS e JavaScript.
Soluzione
Per disabilitare la cache del browser per le pagine JSP, creare un Filter
che viene mappato su un url-pattern
di *.jsp
e fondamentalmente fa la seguente nel metodo 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.
In questo modo non c'è bisogno di questo CopyPaste di tutte le pagine JSP e ingombrare con scriptlet .
Per abilitare la cache del browser per i componenti statici, come CSS e JS, metterli tutti in una cartella comune come /static
o /resources
e creare un Filter
che viene mappato su un url-pattern
di /static/*
o /resources/*
e fondamentalmente fa la seguente nel metodo doFilter()
:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Vedi anche:
Altri suggerimenti
<%
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
%>
contenitori servlet come Tomcat sono dotati di una serie di filtri predefiniti. Si veda ad esempio Scade Filtro . Può essere più facile da usare uno esistente piuttosto che creare il proprio filtro simile.