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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top